【问题标题】:laravel ajax not entering success functionlaravel ajax没有进入成功功能
【发布时间】:2022-01-11 14:02:31
【问题描述】:

首先让我分享一些代码:

视图/表单:

 <form id="xlsForm" enctype="multipart/form-data">
            @csrf
            <input class="btn btn-primary" id="loadFile" type="file" name="excelfile" accept=".xls,.xlsx,.docx,.doc" required/>
            <input type ="hidden" name="load" value="0">
            <button  class="btn btn-light" name ="loadSubmit" id="loadSubmit" type="submit" value ="Analyze">Analyze</button>
        </form

JQuery

 $('#xlsForm').submit(function uploadFile(event) {
        event.preventDefault();
        $.ajaxSetup({
            headers: {
                'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content'),
            }
        });

        $('#loader').show();
        $.ajax({
            url: "{{route('ExcelToArray')}}",
            method: 'POST',
            data: new FormData(this),
            dataType: 'JSON',
            contentType: false,
            cache: false,
            processData: false,
            success: function (response) {
                console.log("entered response")
                $("#inner").empty();
                $.each(response.like_values, function (index, value) {
                    $("#inner").append
                    ('<div class="row">' +
                        '<div class="col-xs-6">' +
                        '<input class="' + value + '" data-name="' + value + '" type="number" name="weight[' + value + ']" min="1" max="3" value="1" style="text-align:center"> ' +
                        '</div>' +
                        '<div class="col-xs-6"  style="padding-left: 9px">' +
                        '<input type="checkbox"  data-name="' + value + '" class="checkbox" value="' + value + '" name="checkbox[' + value + ']"  checked >  ' +
                        '<label style="color:' + response.color[value] + '; font-weight: bold" for="skillChoice_' + index + '">' + value + ' </label>' +
                        '</div>' +
                        '</div>');
                });

            },
           error: function (jqXHR, textStatus, errorThrown) {
                    alert('jqXHR is : ' + jqXHR.value
                         + 'textStatus is : ' + textStatus
                         + ' errorThrown is : ' + errorThrown);

            },

          complete: function () {

              console.log("entered complete")
                $('#loader').hide();
                load_employees()

            },
        });


    });

在我的控制器中有很多东西我不会分享,因为这段代码

  return response()->json([
         'like_values' => $like_values,
         'color' => $color,]);

在我的控制器功能结束时,我可以在 chrome 中看到可用的数据: like_values and color in my chrome

我的问题是我的成功函数没有被调用并且数组没有被迭代。但是它曾经可以工作,但我现在不知道是什么问题。我收到一个错误(我记得即使出现此错误它也可以正常工作。我曾经忽略它,但它说:

SyntaxError: 位置 0 处 JSON 中的意外标记 s

也许我遗漏了与此错误相关的内容。

有人知道怎么回事吗?

提前致谢

【问题讨论】:

  • 尝试使用 json_encoded 传递您的 $like_values 并在刀片上使用 split 函数,然后尝试迭代。
  • 嗨@Ali,当我这样做时,它只是将其编码发送到我的视图。请记住,成功函数根本没有被调用。即使我只是放了一个alert 函数。我不认为我的问题与任何变量或编码有关,因为数据在那里,如果它会调用 success 函数,变量将被处理,但它根本没有进入成功函数。
  • 您是否尝试过删除contentType: false,cache: false,processData: false, 并检查过?

标签: jquery ajax laravel


【解决方案1】:

JSON 语法规则规定数据应该用逗号分隔,但是您在 return 关键字中添加了一个额外的逗号来结束您的控制器功能。

改变这个:

  return response()->json([
     'like_values' => $like_values,
     'color' => $color,]);

收件人:

  return response()->json([
         'like_values' => $like_values,
         'color' => $color]);

【讨论】:

  • 您好,感谢您的回答。我删除了那个逗号,但不幸的是它没有改变任何东西。
【解决方案2】:

我发现了问题。如果您在我制作的屏幕截图中看到响应,您还可以看到输出:string(15) xlsx ausgelöst。所以我也在我的控制器中做了一个var_dump()。所以这个字符串不是 json 格式,这就是为什么它永远不会去我的success function。实际上我从来不知道我从控制器发送到我的视图的所有内容都将由ajax 评估。我以为只有这个代码。

 return response()->json([
     'like_values' => $like_values,
     'color' => $color]); 

这将被考虑。

但是,从控制器中删除 var_dumps() 后它工作正常,只有我的实际响应数据被发送到视图并且 ajax 将其识别为 json 并执行了 success: 函数。

还是谢谢你们。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-25
    • 2014-02-26
    相关资源
    最近更新 更多