2015-02-09 3 views
1

Я пытаюсь использовать загрузку файла blueimp и, как много людей, я не могу понять, почему выполненный обратный вызов не работает!jQuery-File-Upload done callback

Загрузка файла работает хорошо (я использую обработчик загрузки php), даже если обратный вызов сбоя отправляет ошибку. Я прочитал много тем о проблемах json, но никакой ответ не соответствовал моей проблеме.

Вот мой Javascript код:

$(function() { 
'use strict'; 
var url = 'server/php/'; 
$('#fileupload').fileupload({ 
    url: url, 
    dataType: 'json', 
    done: function (e, data) { 
     $.each(data.result.files, function (index, file) { 
      $('<p/>').text(file.name).appendTo('#files'); 
     }); 
    }, 
    fail: function (data) { 
     alert("Fail!"); 
    }, 
    progressall: function (e, data) { 
     var progress = parseInt(data.loaded/data.total * 100, 10); 
     $('#progress .progress-bar').css(
      'width', 
      progress + '%' 
     ); 
    } 
}).prop('disabled', !$.support.fileInput) 
    .parent().addClass($.support.fileInput ? undefined : 'disabled'); 
}); 

У вас есть решение или что-то, чтобы проверить, чтобы найти какие-то ошибки?

EDIT1: обратный вызов успешно работает только тогда, когда я использую dataType: 'text'

edit2: Вот это ответ, когда полный обратного вызова срабатывает:

{"readyState":4,"responseText":" 
\nWarning: Unexpected character in input: '\\' (ASCII=92) state=1 in  /home/mesdevis/work/SITE/acces_web/inner/upload- image/server/php/UploadHandler.php on line 299 
\n 
\nWarning: Unexpected character in input: '\\' (ASCII=92) state=1 in /home/mesdevis/work/SITE/acces_web/inner/upload-image/server/php/UploadHandler.php on line 780 
\n 
\nWarning: Unexpected character in input: '\\' (ASCII=92) state=1 in /home/mesdevis/work/SITE/acces_web/inner/upload-image/server/php/UploadHandler.php on line 804 
\n 
\nWarning: Unexpected character in input: '\\' (ASCII=92) state=1 in /home/mesdevis/work/SITE/acces_web/inner/upload-image/server/php/UploadHandler.php on line 806 
\n 
\nWarning: Unexpected character in input: '\\' (ASCII=92) state=1 in /home/mesdevis/work/SITE/acces_web/inner/upload-image/server/php/UploadHandler.php on line 809 
\n 
\nWarning: Unexpected character in input: '\\' (ASCII=92) state=1 in /home/mesdevis/work/SITE/acces_web/inner/upload-image/server/php/UploadHandler.php on line 812 
\n 
\nWarning: Unexpected character in input: '\\' (ASCII=92) state=1 in /home/mesdevis/work/SITE/acces_web/inner/upload-image/server/php/UploadHandler.php on line 815 
\n 
\nWarning: Unexpected character in input: '\\' (ASCII=92) state=1 in /home/mesdevis/work/SITE/acces_web/inner/upload-image/server/php/UploadHandler.php on line 819 
\n 
\nWarning: Unexpected character in input: '\\' (ASCII=92) state=1 in /home/mesdevis/work/SITE/acces_web/inner/upload-image/server/php/UploadHandler.php on line 822 
\n 
\nWarning: Unexpected character in input: '\\' (ASCII=92) state=1 in /home/mesdevis/work/SITE/acces_web/inner/upload-image/server/php/UploadHandler.php on line 826 
\n 
\nWarning: Unexpected character in input: '\\' (ASCII=92) state=1 in /home/mesdevis/work/SITE/acces_web/inner/upload-image/server/php/UploadHandler.php on line 832 
\n 
\nWarning: Unexpected character in input: '\\' (ASCII=92) state=1 in /home/mesdevis/work/SITE/acces_web/inner/upload-image/server/php/UploadHandler.php on line 885 
\n 
\nWarning: Unexpected character in input: '\\' (ASCII=92) state=1 in /home/mesdevis/work/SITE/acces_web/inner/upload-image/server/php/UploadHandler.php on line 905 
\n 
\nWarning: Unexpected character in input: '\\' (ASCII=92) state=1 in /home/mesdevis/work/SITE/acces_web/inner/upload-image/server/php/UploadHandler.php on line 963 
\n 
\nWarning: Unexpected character in input: '\\' (ASCII=92) state=1 in /home/mesdevis/work/SITE/acces_web/inner/upload-image/server/php/UploadHandler.php on line 1048 
\n 
\nWarning: Cannot modify header information - headers already sent by (output started at /home/mesdevis/work/SITE/acces_web/inner/upload-image/server/php/UploadHandler.php:299) in /home/mesdevis/work/SITE/acces_web/inner/upload-image/server/php/UploadHandler.php on line 1120 
\n{\"files\": [{\"name\":\"IMG_0060.jpg\",\"size\":55277,\"type\":\"image\\/jpeg\",\"url\":\"http:\\/\\/[email protected]\\/SITE\\/acces_web\\/inner\\/upload-image\\/server\\/php\\/files\\/IMG_0060.jpg\",\"thumbnailUrl\":\"http:\\/\\/[email protected]\\/SITE\\/acces_web\\/inner\\/upload-image\\/server\\/php\\/files\\/thumbnail\\/IMG_0060.jpg\",\"deleteUrl\":\"http:\\/\\/[email protected]\\/SITE\\/acces_web\\/inner\\/upload-image\\/server\\/php\\/?file=IMG_0060.jpg\",\"deleteType\":\"DELETE\"}]}","status":200,"statusText":"OK"} 

ответ

1

Удалите строку «dataType: 'json',» и измените «data.result.files» на «data.files» в «сделанном» обратном вызове, и это работает!

dataType: 'json', 
     done: function (e, data) { 
      $.each(data.files, function (index, file) { 
       $('<p/>').text(file.name).appendTo('#files'); 
      }); 
     }, 
0

попытайтесь переместить сделано в конце вызова

$.ajax({url: '/'}).done(function(data) {}); 

для вашего кода, было бы что-то вроде:

$('#fileupload').fileupload({ 
    url: url, 
    dataType: 'json', 
    success: function (data) { 
     alert("Success!"); 
    }, 
    progressall: function (e, data) { 
     var progress = parseInt(data.loaded/data.total * 100, 10); 
     $('#progress .progress-bar').css(
      'width', 
      progress + '%' 
     ); 
    } 
}) 
.done(function (e, data) { 
     $.each(data.result.files, function (index, file) { 
      $('<p/>').text(file.name).appendTo('#files'); 
     }); 
    ) 
.prop('disabled', !$.support.fileInput) 
    .parent().addClass($.support.fileInput ? undefined : 'disabled'); 
}); 
+0

Благодарим за помощь, но это не эффективно. – wilfryed