繁体   English   中英

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

[英]JS Ajax calling PHP and getting ajax call data

我有一个标准的javascript ajax调用,我正在设置数据:到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有一个方法来获取数据,它使用一行返回json_decode(file_get_contents(“php:// input”),true);

哪个是获取所有数据而不需要data =或{data:但是它似乎返回一个数组所以我访问我的属性,如$ data [“userName”],其中一个真正的json对象应该是$ data - > [“用户名”]。 纠正我,如果我错了任何这个我在这种情况下得到数组,因为我真的发送一个json字符串? 与一个json对象?

编辑x2:

所以php正在使它成为一个关联数组,因为它发送的是真实的json_decode。

我认为您的代码问题在于您设置data: '{....}'的行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"]

首先,发送的数据必须是JSON对象而不是字符串。 删除引号。

另外,在服务器端,你最好用json_decode() 解码输入$_POST['data'] (参见documentaion

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM