一尘不染

JS Ajax调用PHP并获取ajax调用数据

ajax

我有一个标准的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"]无法正常工作的东西吗?还是还有其他我可以用来获取数据的东西?

编辑:

因此,框架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。


阅读 240

收藏
2020-07-26

共1个答案

一尘不染

我认为您的代码存在问题所在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']等等。

2020-07-26