Почему мой JavaScript Fetch получает ошибку при успешной публикации в моем приложении Laravel - PullRequest
0 голосов
/ 04 октября 2018

У меня есть приложение Laravel, в котором мой блэйд-вид делает запись JavaScript-извлечения в метод контроллера.Я не понимаю, почему моя выборка выловила ошибку в каком-то успешном сообщении.Мой выбор синхронный.

Я ранее использовал Ajax и получил те же результаты.

Вот коды.На моем блейд-представлении это мой код JavaScript

<script type="text/javascript">
async function fetchPostCards(url, data_post){
  return await fetch(url, {
    method: 'POST', // or 'PUT'
    body: JSON.stringify(data_post), // data can be `string` or {object}!
    headers:{
      'Content-Type': 'application/json'
    }
  })
  .then(response => response.json());
}

function processCards(){
  //this is called via button click
  let arrCard = [
    {card_number: "ABC001", email: "johndoe@somewhere.com"},
    {card_number: "ABC002", email: "janedoe@somewhere.com"},
    {card_number: "ABC003", email: "jimdoe@somewhere.com"},
    {card_number: "ABC004", email: "jackdoe@somewhere.com"},
    {card_number: "ABC005", email: "janetdoe@somewhere.com"},
  ];
  let csrf_token = $( "input[name*='_token']" ).val();

  arrCard.forEach(function(indCard){
    let post_data = {};
    post_data.card_number = indCard.card_number;
    post_data.email = indCard.email;
    data_post['_token'] = csrf_token;

    var fetchPost = fetchPostCards('/processcards', data_post)
    .then(data => {
      console.log(JSON.stringify(data));
    })
    .catch(error => {
      console.log("error " + error);             

    });

  });
}
</script>

Вот мой код на контроллере (PHP):

use Log;

class CardController extends Controller
{

  public function processcard(Request $request){
    $card_number = $request->card_number;
    $email = $request->email;

    $result = "";

    if($card_number == "ABC004") $nonVar += 4; #simulate an error

    #do processing here in the cards
    #some will have $result = "SUCCESS"
    #some will have $result = "CARD NOT VALID", etc.

    log::info("card number: ".$card_number);
    log::info("activate_status: ".$activate_status);
    log::info("******");
    return response()->json(['card_number' =>  $card_number, 'result' => $result]);
  }

}

По запросу для "ABC004" выборка перехватываетошибка, которую я ожидал.При результате = "УСПЕХ" выборка ловит ошибку.Но когда я проверил журналы Laravel, я вижу результаты «УСПЕХ» без ошибок.

Как мне это исправить?

1 Ответ

0 голосов
/ 04 октября 2018

Обработка в контроллере содержала var_dump ().Я предполагаю, что, хотя это и не генерировало ошибку, оно в некотором роде испортило возвращение к сообщению о получении.

Я закомментировал var_dump и убедился, что не было операторов echo.

Это решило проблему.Теперь моя выборка может получить результат успеха.

...