我正尝试在POST中使用AJAX。最初,该方法是GET,并且有效。但是,当我将方法更改为POST时,我发现接收服务器将数据接收为null。我可能是什么问题?代码很简单,当我将方法从“ GET”更改为“ POST”时,我也不明白为什么变得如此复杂。
$.ajax({
method:"POST", //Originally GET
url:"/administrator/change_member_id/",
timeout:30000, //30 seconds
data:{
"m_as_id": storeID,
"m_id": pad_id("UMID", memberID)
}
})
.done(function(responsedata) {
var parsedJson = $.parseJSON(responsedata);
if(parsedJson.result==1) {
$("#"+storeID+"_member_id_a").text(pad_id("UMID", memberID));
$("#"+storeID+"_member_id_b").text(pad_id("UMID", memberID));
alert("Success");
} else {
alert(parsedJson.title+"\n"+parsedJson.description);
}
})
.fail(function(xhr, status, errorThrown) {
alert("Error communicating with server!");
console.log("Status: "+status);
console.log("Error: "+errorThrown);
})
.always(function() {
});
答案 0 :(得分:0)
事实证明,在使用Laravel框架的过程中,我没有将“ get”更改为“ post”。我有:
Route::get('/administrator/change_member_id', 'AdministratorController@changeMemberID')->middleware(CheckLogin::class);
它必须是:
Route::post('/administrator/change_member_id', 'AdministratorController@changeMemberID')->middleware(CheckLogin::class);
然后我偶然发现了另一个根本无法连接到服务器的问题。 事实证明,AJAX中的URL不够准确。我有:
url:"/administrator/change_member_id/"
但是它必须与(上面的)路线完全相同,而路线的尽头没有斜线:
url:"/administrator/change_member_id"
然后我试了一下,意识到如果无论路由中的URL到底有一个斜杠,AJAX中的URL都会导致连接错误。路由中的URL末尾可以带有斜线,也可以不带有斜线。因此,我不知道这是否是因为POST具有URL的技术性,例如GET如何使用查询字符串(在结尾处会有斜杠)而POST没有。也许是AJAX设计中的某种错误导致POST的灵活性不如GET?
编辑:由于我使用的是Laravel框架,因此我认为存在CSRF保护之类的东西,因此我必须添加以下任意一项:
data: {
_token: "{{ csrf_token() }}"
},
或:
headers: {
"X-CSRF-TOKEN": "{{ csrf_token() }}"
}
答案 1 :(得分:0)
enter code here
方式1:
var name = 'data';
var url='/url';
data=[];
data.push({'name':'_token','value':"{{ csrf_token() }}"});
data.push({'name':'name','value':name});
$.post(url,data,function (msg) {
alert(msg)
});
方式2:
$.ajax({
type:'POST',
url:'/url',
data:{_token: "{{ csrf_token() }}",name:name
},
success: function( msg ) {
alert(msg)
}
Route :: post('/ url','HomeController @ namefunction');
祝你好运