valums Ajax-Upload onComplete responseJSON всегда пуст! - PullRequest
0 голосов
/ 11 июля 2011

Я использую ajax-upload в приложении ASP.Net форм.

Мне нужно отправить хеш-строку, которая идентифицирует файл после его сохранения на сервере.

Я делаю это в обработчике ashx, генерирующем строку json, но независимо от того, что яотправить с сервера, в JavaScript я получаю пустой объект ... что я делаю не так?

Это фрагмент для метода при загрузке на ashx // EDITED context.Response.ContentType= "application / json";context.Response.ContentEncoding = System.Text.Encoding.UTF8;context.Response.Cache.SetCacheability (HttpCacheability.NoCache);

ProcessFile(context.Response);
context.Response.Write("{\"success\": true, \"hash\": " + _myHash + "}");

И это при завершении

onComplete: function(id, file, responseJSON) {
    console.log(responseJSON);
}

Ответы [ 5 ]

1 голос
/ 11 марта 2012

Использовать свойство responseType функции AjaxUpload. Установите его на «JSON».

Как это:

new AjaxUpload("#importButton",{
  action: "upload.html",
  name: 'name',  
  responseType: "json",
  allowedExtensions: ['xml'],
  onSubmit : function(file, ext){
  },
  onComplete: function(file, response){
  }  
}); 
1 голос
/ 18 сентября 2011

Вы прочитали server / readme.txt, включенный в пакет?

Вы должны вернуть json в виде текста / html

0 голосов
/ 26 июля 2011

после того, как я отладил код загрузчика, я обнаружил проблему, это случилось со мной, проблема заключается в разборе ответа, поэтому вы должны поместить двойную кавычку в хеш, например:

"{\"success\": true, \"hash\": \"" + _myHash + "\"}"
0 голосов
/ 10 августа 2011

Это изменения, которые я должен был сделать в файле fileuploader.js, чтобы он мог работать:

    this.log("innerHTML = " + doc.body.innerHTML);      
    // replace <pre> tags from IE Frame
    var content = doc.body.innerHTML.replace(/<pre>/gi, '').replace(/<\/pre>/gi, '');

    try {
        response = eval("(" + content + ")");
    } catch(err){
        response = {response: content};

Я также изменил способ выдачи ответа в случае ошибок JSON:

        var response = xhr.responseText;

        try {
            response = eval("(" + xhr.responseText + ")");
        } catch(err){
            // emit an object with the offending responseText
            response = {responseText: response};
        }
0 голосов
/ 11 июля 2011

Это заголовки, которые я установил при возврате данных JSON:

context.Response.ContentType = "application/json";
context.Response.ContentEncoding = System.Text.Encoding.UTF8;
context.Response.Cache.SetCacheability(HttpCacheability.NoCache);

Когда они не верны, я видел странное поведение в различных браузерах.Если их изменение не поможет, я постараюсь исключить сообщение ajax, чтобы убедиться, что вы действительно отправляете правильные данные.

Если вы используете jQuery, у метода $.ajax() есть опция noCache, которую вывозможно, пожелает исследовать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...