我有一个简单的html页面,并且通过使用jquery / ajax,我试图将一个简单的 json 文件发送到我的php服务器。虽然我的脚本的行为确实令人困惑.. < / p>
首先,我试过,我在网上找到了什么(其他SO问题):
var data = {"deviceUUID":"lssfds998", "os":"bb", "pushToken":"l1355436gdfsfdsl"};
$.ajax({
type: "POST",
url: "http://192.138.4.115/Server_CityInfo/register.php",
data: data,
contentType: "application/json; charset=utf-8",
dataType: "json"
}).success(function(response, status, xhr){
console.log(response);
console.log(status);
console.log(xhr);
});
Script1,将空(null)json文件发送到我的服务器。
var data = {"deviceUUID":"lssfds998", "os":"bb", "pushToken":"l1355436gdfsfdsl"};
$.ajax({
type: "POST",
url: "http://192.168.4.113/Server_CityInfo/register.php",
data: data,
//contentType: "application/json; charset=utf-8",
dataType: "json"
}).success(function(response, status, xhr){
console.log(response);
console.log(status);
console.log(xhr);
});
在Script2中,我对行contentType: "application/json; charset=utf-8"
的评论结果略胜一筹,在服务器端我得到的结果如下:deviceUUID=lssfds998&os=bb&pushToken=l1355436gdfsfdsl
。但仍然不是我需要它的json形式。
var data = '{"deviceUUID":"lssfds998", "os":"bb", "pushToken":"l1355436gdfsfdsl"}';
$.ajax({
type: "POST",
url: "http://192.168.4.113/Server_CityInfo/register.php",
data: data,
//contentType: "application/json; charset=utf-8",
dataType: "json"
}).success(function(response, status, xhr){
console.log(response);
console.log(status);
console.log(xhr);
});
在Script3中,我的数据变量是一个字符串..如您所见,我将其包装在' '
中。这一次,我 DO 在我的服务器上正确获取json。
然而,即使我评论dataType: "json"
行,我也可以在我的服务器上正确获取json。那么最近怎么样?我有一种感觉,我不能将我的数据编码为json,所以最后我必须手动完成。这有误吗?我真的需要在我的请求中指定dataType
和contentType
吗?如果我只是让我的数据看起来像一个非常精细的json字符串,例如:'{"deviceUUID":"lssfds998", "os":"bb", "pushToken":"l1355436gdfsfdsl"}'
并在不使用上述参数的情况下发送它,它是否正确?
出于实现目的,这是我的服务器脚本的外观:
// 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'];
答案 0 :(得分:0)
查看以下更改。
您的JSON数组应如下所示:
arr = '[
{
"deviceUUID": "lssfds998",
"os": "bb",
"pushToken": "l1355436gdfsfdsl"
}
]';
$.ajax
({
type: "POST",
url: " DOMAIN/Server_CityInfo/register.php",
data: {data:arr},
success : function(result)
{
// do something
}
});
对于服务器端:
<?php
$data = $_POST['data'];
$json = json_decode($data);
// do something with JSON ARRAY
?>
希望这会奏效。感谢