我有一个简单的 html 页面,通过使用 jquery/ajax,我试图将一个简单的json文件发送到我的 php 服务器。虽然我的脚本的行为确实令人困惑..
首先,我尝试过,我在网上找到的(其他 SO 问题):
脚本1
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 ,向我的服务器发送一个空(空)json 文件。
脚本2
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 格式。
脚本3
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 中,我的数据变量是一个字符串。如您所见,我将它包装在里面' '
。这一次,我确实在我的服务器上正确获取了 json 。
但是,即使我评论该dataType: "json"
行,我也可以在我的服务器上正确获取 json。那么这里发生了什么?我有一种感觉,我无法将我的数据编码为 json,所以最后我必须手动完成。还是错了吗?我真的需要在我的请求中指定一个dataType
and吗?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'];