我正在从表单进行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。表单数据也被附加到dataString。但是,jquery抛出405错误。
我正在使用许多其他类似的ajax函数来获取和发送数据。除了这个特殊功能外,一切都很完美。当我空手而归时,我会非常感激一些指示。
答案 0 :(得分:1)
以防止您可以使用jQuery事件处理。
为此,您应首先从onclick
删除<input type="submit" ...>
属性
然后将事件处理程序绑定到submit-event并阻止使用preventDefault()
的表单提交的默认行为:
$("#del_form").on("submit", function(event){
event.preventDefault();
//your ajax code goes here...
});
答案 1 :(得分:0)
我认为你应该在你的Ajax提交中使用'url':'/ some-text / another-text而不是'url':'some-text / another-text。那就是....有一个/在第一个网址之前。这对我有用。