JS Ajax调用PHP并获取Ajax调用数据
我有一个标准的JavaScript AJAX调用,我设置的数据:到JSON数据。JS Ajax调用PHP并获取Ajax调用数据
$.ajax({
type: "POST",
url: BaseUrl + "User/Login",
//url: BaseUrl + "User/Limit/1/2",
data: '{"apiKey":"c7089786-7e3a-462c-a620-d85031f0c826","appIDGiven":"200","userName":"matt2","password":"pass"}',
success: function(data){
console.log(data);
},
error: function(request){
console.log(request);
},
});
我正试图获取php $_POST["data"]
中的数据,这是行不通的。
但是,data: 'test={"apiKey":"c7089786-7e3a-462c-a620-d85031f0c826","appIDGiven":"200","userName":"matt2","password":"pass"}'
的作品。
我想知道是否它可能是我的框架或类似的东西阻止$_POST["data"]
工作或这是不可能的?还是有什么我可以用来获得这些数据?
编辑:
所以框架YII和延伸Restfullyii有一个方法来获得它使用一条线 返回json_decode(的file_get_contents( “PHP://输入”),真)数据;
这是获取所有的数据,而不需要数据=或{数据:但它似乎是返回一个数组,因此Im访问我的属性,如$ data [“userName”]其中一个真正的JSON对象应该是$数据 - > [ “的userName”]。纠正我,如果我错了任何这我在这种情况下得到数组,因为我真的发送一个JSON字符串?与json对象?
EDIT X2:
所以PHP是使它成为一个ASSOC阵列,因为它是真正的发送到json_decode ..
我觉得你的代码的问题是在你设置data: '{....}'
行。
它应该是JSON格式,以便正确地传递(尽管它也可以是字符串格式,但你需要分析它在服务器端)
下面的代码应该工作的权利:
$.ajax({
type: "post",
url: BaseUrl + "User/Login",
data: {"apiKey":"c7089786-7e3a-462c-a620-d85031f0c826","appIDGiven":"200","userName":"matt2","password":"pass"},
success: function(data){
console.log(data);
},
error: function(request){
console.log(request);
}
});
在服务器端尝试:$_POST['apiKey']
$_POST['appIDGiven']
等等。
data
选项必须是object
或串行(例如"name1=value1&name2=value2"
)string.So你需要通过这样的:
data: /*object*/{data:'{"apiKey":"c7089786-7e3a-462c-a620-d85031f0c826","appIDGiven":"200","userName":"matt2","password":"pass"}'},
// ^-----this is added for $_POST["data"]
或类似:
data: /*serialized string*/'data={"apiKey":"c7089786-7e3a-462c-a620-d85031f0c826","appIDGiven":"200","userName":"matt2","password":"pass"}',
// ^-----this is added for $_POST["data"]
我不确定,但我认为数据总是作为字符串发送到服务器。 – MrB 2012-07-09 16:15:54
@MrB是的,最后我认为它是作为字符串发送的,但服务器/客户端的解释是不同的。 – tftd 2012-07-10 10:49:21