Laravel 5.8 JSON Ответ с таким количеством пробелов - PullRequest
0 голосов
/ 22 января 2020

Каждый раз, когда я выполняю запрос ajax, Laravel всегда возвращает ответ JSON с таким количеством пробелов перед текстом ответа, чтобы ответ всегда выполнялся с ошибкой, а не в разделе успеха ajax запрос, и я не могу также показать свое сообщение об ошибке, потому что оно начинается с пробела, поэтому я не могу взять обозначение объекта, могу ли я что-нибудь сделать, чтобы избавиться от него?

Снимок экрана с текстом ответа :

enter image description here

Мой ajax код запроса:

$('.ajax-form').submit(function (e) {
  e.preventDefault();
  var form = $(this);

  $.ajax({
    dataType: "json",
    url: form.attr('action'),
    method: form.attr('method'),
    data: new FormData(this),
    contentType: false,
    cache: false,
    processData: false,
    success: function(result){
      console.log('success');
      alert(result.data.message);
      if (result.data.location) window.location.hash = result.data.location;
      location.reload(true);
    },
    error: function(err){
      console.log(err);
        if (err.status == 422) {
          let el = form.find('.error-block');
          el.find('.alert-danger').remove();
          console.log(err);
          $.each(err.responseJSON.errors, function (i, error) {
            let errorBlock = "<div class='alert alert-danger alert-dismissible'> "
                           + "<button type='button' class='close' data-dismiss='alert' aria-hidden='true'>&times;</button>"
                           + "<p><i class='icon fa fa-close'></i> " + error[0]+ "</p></div>";
            el.append(errorBlock);
            $('.modal').animate({ scrollTop: 0 }, 'fast');
          });
        }
      }
  });
});

Мой код в laravel:

public function insert(Request $request)
{
    $request->validate(['image' => 'required|image']);

    return response()->json(['data' => ['message' => 'Data is successfully updated!']]);
}

На самом деле этот код работал до того, как я получил этот пробел, я думаю, что это проблема на стороне сервера, но я ничего не менял, кроме как сделать composer update раньше.

Ответы [ 3 ]

0 голосов
/ 22 января 2020

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

0 голосов
/ 22 января 2020

На данный момент я считаю, что мое решение заключается в добавлении ob_clean(); в метод Controller __construct, поэтому мне не нужно добавлять его в каждый контроллер и запрос, но я надеюсь, что есть лучшее решение, чем это.

0 голосов
/ 22 января 2020

Вы можете попробовать установить заголовки с параметром «Принять» на json в ваш ajax.

$.ajax({
    ...,
    headers: {
        'Accept': 'application/json',
    },
    ...
})
...