jquery ajax帖子,试图张贴json,不起作用

时间:2013-05-17 15:18:25

标签: jquery ajax json http-post

我开发了一个小型的php服务器。服务器等待提供将发送给他的json文件。

我创建了一个html页面,我正在使用jquery尝试将json文件发送到我的服务器。

我有一个按钮,当我按下它时:

$("button").click(function(){

                     var data = '{"deviceUUID":"25f998", "os":"bb", "pushToken":"l1355436gdfsfaddsl"}';
                     alert("User: " + userId + "\n" + "Data: " + data);

                     $.ajax({
                         type: "POST",
                         url: "http://192.148.2.123/Server_CityInfo/register.php",
                         data: data,
                         contentType: "application/json; charset=utf-8",
                         dataType: "json"
                         });


                 });

然而,到达服务器的json文件是空的..我知道服务器工作,因为我已经通过java,obj-c,c#...

发出请求

这可能是什么问题?警报上的数据变量打印:{"deviceUUID":"25f998", "os":"bb", "pushToken":"l1355436gdfsfaddsl"},它是正确的json格式,我的服务器接受。

这是我的第二部分,PHP

// We use php://input to get the raw $_POST results.
$json = file_get_contents('php://input');
$json_post = json_decode($json, true);

//creating variables from received json
$deviceUDID = $json_post['deviceUUID'];
$os = $json_post['os'];
$pushToken = $json_post['pushToken'];

因此,当我尝试打印deviceUUIDospushToken时,它们都是空的。在我的数据库中,它们会自动插入,显示为NULL。这意味着帖子请求到了,但是空的......或格式错误..

2 个答案:

答案 0 :(得分:0)

根据您的浏览器显示控制台。 Chrome / ff:Ctrl + shift + i IE:f12然后点击刷新

对于成功部分,他意味着一旦ajax调用完成就使用回调。您可以使用donefailallways

$.ajax({
     type: "POST",
     url: "http://192.148.2.123/Server_CityInfo/register.php",
     data: data,
     contentType : "application/json; charset=utf-8",
     dataType: "json"
}).allways(function(response, status, xhr){
     console.log(response);
     console.log(status);
     console.log(xhr);
});

您将在控制台中显示您的通话结果。

答案 1 :(得分:0)

在以下行中,您将数据设置为字符串值:

var data = '{"deviceUUID":"25f998", "os":"bb", "pushToken":"l1355436gdfsfaddsl"}';

如果您希望这是一个Javascript对象(JSON),则需要删除单引号:

var data = {"deviceUUID":"25f998", "os":"bb", "pushToken":"l1355436gdfsfaddsl"};

查看http://www.json.org/了解详情。该网站有许多关于JSON格式的信息和工具。