Возврат строки из PHP и предупреждение JQuery - PullRequest
0 голосов
/ 18 мая 2018

Я пытаюсь сделать что-то, что должно быть действительно простым:

jQuery post -> который вернет строку с сервера -> строку предупреждения?

Но на всю жизнья не могу получить предупреждение для отображения строки, я получаю объект Object или предупреждение,

Что я здесь не так делаю?

Результаты:

JSON.parse: неожиданный символ в строке 1 столбца 2 данных JSON

исключение: циклический объект

[объект Object]

Обновить код Php:

public function fileupload(){
    $uniqueID = request('uniqueId');
    if($uniqueID != ''){
         echo 'Works'
    }
    else{
         echo 'Failed'
    }
}

Обновлен код jQuery: предупреждение о последнем блоке кода

$(function () {

   $('.fileupload').fileupload({

      headers: {
      'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
      },
      maxFileSize: 3000000,
      acceptFileTypes:  /(\.|\/)(pdf|jpeg)$/i,
      dataType: 'json',
      done: function (e, data) {
         $.each(data.result.files, function (index, file) {
            $('<p/>').text(file.name).appendTo(document.body);          
         });           
      },
         // Required for Progress bar
      progress: function (e, data) {
         var progress = parseInt(data.loaded / data.total * 100, 10);
         $(this).closest("div").find("div.bar").css(                                                   
            'width', progress + '%'            
         );
         // update text in progress bar
        $(this).closest("div").find("div.percentage").text(progress + '%');        
      }
      // This is required for displaying errors
      }).bind('fileuploadsubmit', function (e, data) {
         data.formData = {
            'uniqueId': $('.uniqueFileId').val()
         };

      }).on('fileuploadadd', function (e, data) {
         data.context = $('<div/>').appendTo('#files');
         $.each(data.files, function () {
         var node = $('<p/>').append($('<span/>'));     
         node.appendTo(data.context);
      });

      // This is also required for displaying errors 
      }).on('fileuploadprocessalways', function (e, data) {

         alert(data);

         var index = data.index,
            file = data.files[index],
            node = $(data.context.children()[index]);

         if (file.error) {
            node.append($('<span style=\'color:red; \'"/>').text(file.name +' '+ file.error + ',file must be .pdf or .jpg'));

         }
      });
   });

Ответ от php:

updated

Ответы [ 3 ]

0 голосов
/ 19 мая 2018

Согласно документации, объект данных, передаваемый обработчику fileuploadprocessalways, не содержит ответ ajax от обработчика загрузки сервера.

Вместо этого он содержит

twoмассивы:

files - содержит результат примененного процесса.

originalFiles - исходные загруженные файлы.

https://github.com/blueimp/jQuery-File-Upload/wiki/Options#processing-callback-options

Возможно, вы хотели написать обработчик для обратного вызова done.https://github.com/blueimp/jQuery-File-Upload/wiki/Basic-plugin

0 голосов
/ 20 мая 2018

В чем проблема, вы не указываете ключ для своего сообщения.

php:

public function fileupload(){
    $uniqueID = request('uniqueId');
    if($uniqueID != ''){
         echo json_encode(array("msg" => 'Works'));
    }
    else{
         echo json_encode(array("msg" => 'Failed'));
    }
}

jQuery:

$(function () {

   $('.fileupload').fileupload({

      headers: {
      'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
      },
      maxFileSize: 3000000,
      acceptFileTypes:  /(\.|\/)(pdf|jpeg)$/i,
      dataType: 'json',
      done: function (e, data) {
         $.each(data.result.files, function (index, file) {
            $('<p/>').text(file.name).appendTo(document.body);          
         });           
      },
         // Required for Progress bar
      progress: function (e, data) {
         var progress = parseInt(data.loaded / data.total * 100, 10);
         $(this).closest("div").find("div.bar").css(                                                   
            'width', progress + '%'            
         );
         // update text in progress bar
        $(this).closest("div").find("div.percentage").text(progress + '%');        
      }
      // This is required for displaying errors
      }).bind('fileuploadsubmit', function (e, data) {
         data.formData = {
            'uniqueId': $('.uniqueFileId').val()
         };

      }).on('fileuploadadd', function (e, data) {
         data.context = $('<div/>').appendTo('#files');
         $.each(data.files, function () {
         var node = $('<p/>').append($('<span/>'));     
         node.appendTo(data.context);
      });

      // This is also required for displaying errors 
      }).on('fileuploadprocessalways', function (e, data) {
console.log(data);



         alert(JSON.parse(data));

         var index = data.index,
            file = data.files[index],
            node = $(data.context.children()[index]);

         if (file.error) {
            node.append($('<span style=\'color:red; \'"/>').text(file.name +' '+ file.error + ',file must be .pdf or .jpg'));

         }
      });
   });

Изменения:

1) PHP-код для возврата действительного JSON, иначе js будет рассматривать его как полезную нагрузку.2) Выполните синтаксический анализ возвращаемого объекта, и у вас будет этот объект JSON в методе оповещения.

Надеюсь, что это статистика вашей проблемы.

0 голосов
/ 18 мая 2018

Вы должны попробовать следующие изменения:

$msg = 'Hello';
echo json_encode($msg);

Return работает, если вы используете возвращаемое значение в функциях PHP.В вашем случае вы общаетесь в PHP и JavaScript.Поведение Ajax по умолчанию выводит то, что вы выводите на экран в php.

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