使用POST在Laravel刀片服务器中使用Ajax的内部服务器错误500

时间:2018-09-01 05:22:07

标签: javascript php ajax laravel internal-server-error

我的刀片中有一个按钮:

<button id="save-adjuster" style="color:black" class="btn btn-xs btn-warning">Save Result</button>

我有以下JavaScript通过Ajax处理它:

<script>
                $( "#save-adjuster" ).click(function() {
                        $.ajax({
                                url: '{{ Request::url() }}/save-adjuster',
                                type: 'POST',
                                data: {
                                        "_token": "{{ csrf_token() }}",
                                        "splitname": "{!! $split_name !!}",
                                        "adjusting_payment": "{!! ($adjusting_amount/2) !!}"
                                }, 
                                success: function (result) {
                                        alert("Saved", "This split scenario's adjusting payment amount has been saved", "success")
                                },
                                error: function (result) {
                                        alert({
                                title: "Oops",
                                text: "We ran into an issue trying to save this item",
                                icon: "error",
                                button: "Dismiss",
                                })
                                }
                                });  
                        });
                </script>

将其视为页面源可以显示正确形成的“数据”参数。我收到一个{对话框,出现jquery-2.0.3.min.js:6 POST 500 (Internal Server Error)错误

localhost:8080 says [object Object]

看起来ajax的格式正确,但是由于我的控制器中的dd()从不触发,因此它从未到达控制器(如下)。我的Apache错误日志根本不显示任何内容-即使明显是服务器错误,也没有记录在日志中。

我已经阅读了有关Laravel Ajax错误的几乎所有可用参考,几乎所有内容都涉及缺少CSRF令牌,但是我已经知道了,Chrome检查器和控制台显示了格式正确的令牌。

FWIW,这是我的路线:

Route::post('tax-split-scenario/{split_name}/save-adjuster', 'GenerateScenarioController@storeAdjuster')->middleware('auth');

这是我的控制器:

public function storeAdjuster(Request $request)
{
    dd($request->input('splitname'));

    //Store splt adjuster amount
    $update_split = SplitScenarioAdjustment::where('split_scenario_name', '=', $request->splitname, 'and')->where('created_by_id', '=', Auth::id())->first();
    $update_split->adjusting_payment = $request->adjusting_payment;
    $update_split->save();


    return redirect()->route('named-split-scenario', [$split_name]);
}

我正在Windows 10上运行Laravel 5.5和XAMPP。

任何人和所有建议都将受到欢迎。我浏览了这里和网上其他地方的所有建议张贴都无济于事,并停下来了-预先感谢您的任何帮助。

:: ADD控制台输出::

jquery-2.0.3.min.js:6 POST http://localhost:8080/DS_dev_01/public/tax-split-scenario/Gregs/save-adjuster 500 (Internal Server Error)
send @ jquery-2.0.3.min.js:6
ajax @ jquery-2.0.3.min.js:6
(anonymous) @ Gregs:2250
dispatch @ jquery-2.0.3.min.js:5
y.handle @ jquery-2.0.3.min.js:5
Gregs:2263 Uncaught ReferenceError: data is not defined
    at Object.error (Gregs:2263)
    at l (jquery-2.0.3.min.js:4)
    at Object.fireWith [as rejectWith] (jquery-2.0.3.min.js:4)
    at k (jquery-2.0.3.min.js:6)
    at XMLHttpRequest.<anonymous> (jquery-2.0.3.min.js:6)
error @ Gregs:2263
l @ jquery-2.0.3.min.js:4
fireWith @ jquery-2.0.3.min.js:4
k @ jquery-2.0.3.min.js:6
(anonymous) @ jquery-2.0.3.min.js:6
load (async)
send @ jquery-2.0.3.min.js:6
ajax @ jquery-2.0.3.min.js:6
(anonymous) @ Gregs:2250
dispatch @ jquery-2.0.3.min.js:5
y.handle @ jquery-2.0.3.min.js:5
jquery-2.0.3.min.js:6 XHR failed loading: POST "http://localhost:8080/DS_dev_01/public/tax-split-scenario/Gregs/save-adjuster".
send @ jquery-2.0.3.min.js:6
ajax @ jquery-2.0.3.min.js:6
(anonymous) @ Gregs:2250
dispatch @ jquery-2.0.3.min.js:5
y.handle @ jquery-2.0.3.min.js:5

当我将错误函数更改为(因为上面显示的“数据”为未定义):

                        error: function (data, url) {
                                console.log(data);
                                console.log(url);
                                alert({
                        title: "Oops",
                        text: "We ran into an issue trying to save this item",
                        icon: "error",
                        button: "Dismiss",
                        })

我在控制台中得到了很多嵌套的递归输出(太大了,无法在此处发布),但是除了URL“无法加载”之外,我什么都看不到是什么问题。

此外,更改我的路线以查看所调用的URL是否有误:

Route::post('tax-split-scenario/{split_name}/save-equalizer',function()
    {return 'Success, the route from Ajax is working';
    });

未得到任何回应,确认我没有走那么远。在刀片式JavaScript中,这显然失败了。

//更新//

警报框的错误功能代码似乎是一个问题。我将脚本代码更改为:

        <script>
        $( "#save-adjuster" ).click(function() {
                console.log('{{$split_name}}');
                $.ajax({
                        url: '{{ Request::url() }}/save-adjuster',
                        type: "POST",
                        data: {
                                "_method": 'POST',
                                "_token": "{{ csrf_token() }}",
                                "splitname": '{!! $split_name !!}',
                                "adjusting_payment": 1000
                        }, 
                        dataType: 'json',
                        success: function (data) {
                                //console.log(data);
                                alert("Saved", "This amount has been saved", "success")

                        },
                        error: function (data, url) {
                                //console.log(data);
                                //console.log(url);
                                alert("We ran into an issue trying to save this item")
                        }

                        });  
                });
        </script>

服务器错误消失了,但是现在我在控制台中找到了:

Gregs
jquery-2.0.3.min.js:6 XHR finished loading: POST "http://localhost:8080/DS_dev_01/public/tax-split-scenario/Gregs/save-adjuster".
send @ jquery-2.0.3.min.js:6
ajax @ jquery-2.0.3.min.js:6
(anonymous) @ Gregs:2251
dispatch @ jquery-2.0.3.min.js:5
y.handle @ jquery-2.0.3.min.js:5
jquery-2.0.3.min.js:6 [Violation] 'load' handler took 3445ms

忽略最后报告的时间,那是我单击警报框之前的时间。我还对数据参数“ adjusting_payment”进行了硬编码。

现在会触发我的错误警报,但要告诉我是什么问题。

0 个答案:

没有答案