我的刀片中有一个按钮:
<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>
将其视为页面源可以显示正确形成的“数据”参数。我收到一个{1>对话框,出现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”进行了硬编码。
现在会触发我的错误警报,但要告诉我是什么问题。