#c# #javascript #json
#c# #javascript #json
Вопрос:
У меня есть ASP.Веб-сайт Net с кнопками, которые передают путь к файлу функции javascript, которая выполняет ajax-вызов веб-метода. Путь к файлу, который, как вы видите, передается в OpenDoc ниже, является результатом JSON.stringify(fs01 Documents …)
<input type="button" id="b0" value="Open" onclick="openDoc('amp;quot;\\fs01\Documents\2011\MEASEJA\1108030203amp;nbsp;(1)amp;nbsp;10-3-2011amp;nbsp;Martamp;nbsp;Cartamp;nbsp;Serviceamp;nbsp;Completionamp;nbsp;Survey.pdfamp;quot;');">
function openDoc(filename) {
var xml = new XMLHttpRequest();
xml.open("POST", "Default.aspx", true);
xml.onreadystatechange = function () {
if (xml.readyState == 4) {
if (xml.status == 200) {
$.ajax({
type: "POST",
dataType: "json",
contentType: "application/json",
url: "Service.asmx/openDoc",
data: '{ file:' filename '}',
success: function () { },
error: function (xml, status, error) {
var err = eval("(" xml.responseText ")");
alert("Open Doc: " xml.Message);
}
});
}
}
}
xml.send(null);
}
[WebMethod]
public byte[] openDoc(string file)
{
FileStream fs = new FileStream(file, FileMode.Open, FileAccess.Read);
byte[] buffer;
try
{
int length = (int)fs.Length;
buffer = new byte[length];
int count;
int sum = 0;
while ((count = fs.Read(buffer, sum, length - sum)) > 0)
sum = count;
}
catch (Exception ex)
{
throw (ex);
}
finally
{
fs.Close();
}
return buffer;
}
Проблема в том, что где-то на этом пути что-то происходит с в пути к файлу и возникают подобные ошибки при вызове ajax с использованием firebug:
«Нераспознанная escape-последовательность. (16): { файл: » fs01 Documents 2011 MEASEJA 1108030203 (1) 10-3-2011 Обзор завершения обслуживания Mart Cart.pdf»}»
Я знаю, что в C # вам нужно удвоить все , но именно так путь к файлу начинается с нажатия кнопки. Где-то по ходу дела я теряю дополнительные данные, и C # не может обработать их как файл.
Ответ №1:
попробуйте найти одну обратную косую черту и удвоить, если необходимо
//pseudocode
if (s.StartsWith(@"f")) s.Prepend(@"");
Комментарии:
1. Прежде чем я передам его в качестве параметра ajax?
2. На самом деле, поцарапайте это. Теперь, когда я внимательно смотрю, я знаю, к чему вы клоните. Я попробую и дам вам знать.
3. Добавлено if (file. Начинается с (@»f»)) { file = @»» file; } в начало веб-метода, но я получаю ту же ошибку.