【发布时间】:2015-12-26 13:00:42
【问题描述】:
我正在从表单进行 ajax 调用以将复选框数据发送到控制器。下面是相关的html代码:
<form method="POST" action="http://192.168.1.25/nonresponsiveurl" accept-charset="UTF-8" class="del_form" id="del_form" name="del_form"><input name="_token" type="hidden" value="igr6iMt1WfeZunyG8wpyy1tNK1efgiclyOvZ1hkF">
<input id="submit" type="submit" name="submit" value="Delete Checked Records" onclick="return submitDelForm();">
<div class="table-responsive shadow-edge-nofill">
<table class="table table-striped">
<tbody>
<tr>
<td><input id="badURL0" class="bad_url_checkbox" name="bad_url_checkbox" type="checkbox" value="2"></td>
etc....etc.....etc....
</form>
这里是相关的javascript代码:
<script type="text/javascript">
function submitDelForm(){
$('div#loadmoreajaxloader').show();
var form = document.del_form;
var dataString = $(form).serialize();
$.ajaxSetup({
headers: { 'X-CSRF-Token' : $('meta[name=_token]').attr('content') }
});
$.ajax({
type: 'POST',
URL: '/delbadurl',
contentType: "application/json; charset=utf-8",
data: {'serial_data' : dataString},
success: function(data){
$('div#loadmoreajaxloader').hide();
}
});
}
</script>
这里是相关路由:
Route::post('delbadurl','Admin\DashboardController@delBadURL' );
我可以确认 CSRF 令牌已附加到数据字符串。表单数据也被附加到 dataString 中。但是,jquery 会抛出 405 错误。
我正在使用许多其他类似的 ajax 函数来获取和发送数据。除了这个特定的功能外,一切都完美无缺。一些指针将不胜感激,因为我空手而归。
【问题讨论】:
-
首先
405不是jQuery错误,而是http错误。您很可能会收到此错误,因为您使用的表单 URL (http://192.168.1.25/nonresponsiveurl) 不存在或无法访问。您没有采取任何措施来阻止表单的标准 html 提交。所以这就是让你进入405页面的原因,我猜。 -
为了排查问题,我建议你提交不带AJAX的表单,看看你得到了什么......
-
您的仪表板控制器中是否存在 delBadURL?
-
@low_rents,你也许是对的。如何防止发生标准表单提交?我要做的就是将表单数据传递给 jquery 脚本,该脚本会将其传递给控制器。 jquery 脚本会在控制器执行完代码后重建视图。