我发了一个AJAX请求。
以下是它的设置:
$.ajax({
data : { id : 25 },
dataType : 'json',
contentType : 'application/json; charset=utf-8',
type : 'POST',
// the rest of the setting
});
这是服务器端:
header("contentType=application/json");
// and then the rest of the request
一切正常。数据通过JSON返回,没有问题。但$ _POST没有填充任何数据,但是当我通过firebug检查ajax请求日志时,我发现它发送了id ...可能是什么问题?当我设置contentType标头和dataType ...
时,存在问题我也设置了Allow Origin
标题,但问题没有解决......
我还使用$_POST
和$_REQUEST
我使用LARAVEL框架......
答案 0 :(得分:1)
jQuery的ajax
方法的默认方法类型是GET
。尝试在您的设置中将方法类型设置为POST
,如下所示:
$.ajax({
type: 'POST', // <<<<
data : { id : 25 },
dataType : 'json',
contentType : 'application/json; charset=utf-8',
// the rest of the setting
});
有关ajax
方法的详情,请参阅here。
<强>更新强>
我认为最好不要指定contentType
。官方文件说:
contentType(默认值:'application / x-www-form-urlencoded; charset = UTF-8')
将数据发送到服务器时,请使用此内容类型。默认为“application / x-www-form-urlencoded; charset = UTF-8”,对大多数情况都适用。如果您明确地将内容类型传递给$ .ajax(),那么它总是被发送到服务器(即使没有数据发送)。 W3C XMLHttpRequest规范规定字符集始终为UTF-8;指定另一个字符集不会强制浏览器更改编码。
答案 1 :(得分:0)
你应该检查$ _GET以查看数据是否存在。 如果您没有明确定义发送数据的任何方法,则默认情况下使用GET方法。 将方法设置为POST或通过$ _GET检索数据以查看它是否存在。
答案 2 :(得分:0)
在ajax中添加类型
$.ajax({
data : { id : 25 },
dataType : 'json',
type :'POST'
contentType : 'application/json; charset=utf-8',
// the rest of the setting
})
答案 3 :(得分:0)
您未通过类型,因此默认为获取请求,请检入$_GET[]
或添加 POST 类型ajax电话。
答案 4 :(得分:-1)
您错过了以下列方式声明类型POST使用
$.ajax({
data : { id : 25 },
dataType : 'json',
type :'POST',
contentType : 'application/json; charset=utf-8',
// the rest of the setting
});