为什么我的JavaScript Fetch在Laravel App上成功发布后出现错误

时间:2018-10-04 03:41:14

标签: javascript php laravel laravel-5 fetch

我有一个Laravel应用,我的刀片视图在其中将JavaScript提取信息发布到控制器方法。我不明白为什么我的提取会在某些成功的帖子中捕获错误。我的提取是同步的。

我以前使用过Ajax并获得了相同的结果。

这里是代码。在我的刀片视图中,这是我的JavaScript代码

    console.log(process.argv);
    if (process.argv.length < 3) {
        console.log("usage: node hd <filename>");
        process.exit(1);
    }
    fs.open(process.argv[2], 'r', (err,fd) => {
        if (err) {
            console.log("Error: ", err);
            process.exit(2);
        } else {
            fs.fstat(fd, (err,stats) => {
                if (err) {
                    process.exit(4);
                } else { 
                    var size = stats.size;
                    console.log("size = " + size);
                    going = true;
                    var buffer = new Buffer(8192);
                    var offset = 0;
                    //while( going ){
                    while( going ){
                        console.log("Reading...");
                        fs.read(fd, buffer, 0, Math.min(size-offset, 8192), offset, (error_reading_file, bytesRead, buffer) => {
                            console.log("READ");
                            if (error_reading_file)
                            {
                                console.log(error_reading_file.message);
                                going = false;
                            }else{
                                offset += bytesRead;
                                for (a=0; a< bytesRead; a++) {
                                    var z = buffer[a];
                                    console.log(z);
                                }
                                if (offset >= size) {
                                    going = false;
                                }
                            }
                        });
                    }
                    //}
                    fs.close(fd, (err) => {
                        if (err) {
                            console.log("Error closing file!");
                            process.exit(3);
                        }
                    });
                }
            });
        }
    });

这是我在控制器(PHP)上的代码:

<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>

根据对“ ABC004”的请求,提取将捕获我所期望的错误。在结果=“ SUCCESS”上,提取将捕获错误。但是当我查看Laravel日志时,看到的是“成功”结果,没有错误。

我该如何解决?

1 个答案:

答案 0 :(得分:0)

控制器中的处理中有一个var_dump()。我想,尽管它没有产生错误,但是却使返回目录变得混乱。

我已注释掉var_dump,并确保没有回显语句。

这解决了问题。我的提取现在可以获取成功结果。