我有一个标准的javascript ajax调用,其中将data:设置为json数据。
$.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"]
data: 'test={"apiKey":"c7089786-7e3a-462c-a620-d85031f0c826","appIDGiven":"200","userName":"matt2","password":"pass"}'
我想知道这可能是我的框架或诸如此类的$_POST["data"]无法正常工作的东西吗?还是还有其他我可以用来获取数据的东西?
编辑:
因此,框架YII和扩展Restfullyii具有使用一种方法获取其数据的方法return json_decode(file_get_contents(“ php:// input”),true);
这将获取所有数据,而无需data =或{data:然而,它似乎正在返回一个数组,因此Im正在访问我的属性,例如$ data [“ userName”],其中真正的json对象应为$ data-> [“用户名”]。如果我在任何一种情况上都不对,请更正我,在这种情况下,因为我真的在发送json字符串,所以我得到了数组吗?与一个json对象?
编辑x2:
因此php将其设为assoc数组,因为它会将true发送给json_decode。
我认为您的代码存在问题所在data: '{....}'。 为了正确传递,它应该为json格式(尽管它也可以为字符串格式,但是您需要在服务器端进行解析)
data: '{....}'
下面的代码应该正常工作:
$.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']等等。
$_POST['apiKey']
$_POST['appIDGiven']