Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JSON到PHP数组_Php_Javascript_Json - Fatal编程技术网

Javascript JSON到PHP数组

Javascript JSON到PHP数组,php,javascript,json,Php,Javascript,Json,在我的Javascript中,我是这样组装和排列的: cachePHP = "'lat':'" + (Number(upDataItems[2])).toFixed(5)+"'"; cachePHP = cachePHP + ",'lon':'" + (Number(upDataItems[3])).toFixed(5)+"'"; cachePHP = cachePHP + ",'msec':'" + (parseInt(upDataItems[7])-parseInt(tz))+"'"

在我的Javascript中,我是这样组装和排列的:

    cachePHP = "'lat':'" + (Number(upDataItems[2])).toFixed(5)+"'";
cachePHP = cachePHP + ",'lon':'" + (Number(upDataItems[3])).toFixed(5)+"'";
cachePHP = cachePHP + ",'msec':'" + (parseInt(upDataItems[7])-parseInt(tz))+"'";
cachePHP = cachePHP + ",'spd':'" + (Number(upDataItems[0])).toFixed(1)+"'";
cachePHP = cachePHP + ",'hdg':'" + (Number(upDataItems[1])).toFixed(1)+"'";

dataCacheNew.push("{"+cachePHP+"}");
我向数组中添加了不同数量的数据,可以是10项,也可以是100项……然后我将这些数据推到一个PHP文件中。PHP文件是从Javascript调用的,如下所示:

"my.php?che="+JSON.stringify(dataCacheNew);
在PHP中,如何获取数据以便“解析”并将其发布到数据库中

更新03/13: 我还是不能让它工作。根据下面的建议更新,但仍然…没有工作

我的Javascript(jQuery):

我的PHP:

$cache = $_POST['che'];
    writeData($cache,"insertCache.txt");

$cacheDecode = json_decode($cache);
writeData($cacheDecode,"insertCacheDecode.txt");
insertCache.txt:

[{\"lat\":\"56.34\",\"lon\":\"12.56\",\"msec\":\"123456799000.00\",\"spd\":\"4.20\",\"hdg\":\"1.40\"},{\"lat\":\"12.34\",\"lon\":\"34.56\",\"msec\":\"123456789000.00\",\"spd\":\"1.20\",\"hdg\":\"3.40\"}]
insertCacheDecode.txt 完全空白


给出了什么?

您可以使用如下代码:

$array = json_decode($_GET['che']);
请注意,您不需要创建字符串,可以将嵌套对象字符串化:

dataCacheNew.push({
    lat: (Number(upDataItems[2])).toFixed(5),
    lon: (Number(upDataItems[3])).toFixed(5),
    msec: (parseInt(upDataItems[7])-parseInt(tz)),
    spd: (Number(upDataItems[0])).toFixed(1),
    hdg: (Number(upDataItems[1])).toFixed(1)
});

您的JSON无效,因为您的属性名使用单引号。最重要的是,您正在对已经糟糕编码的JSON进行字符串化

请使用以下命令

dataCacheNew.push({
    lat: Number(upDataItems[2]).toFixed(5),
    lon: Number(upDataItems[3]).toFixed(5),
    ...
});
"my.php?che=" + JSON.stringify(dataCahceNew);

不要试图自己构建JSON字符串。语言有用于此的内置方法。而是按照您想要的方式构建对象,然后将其编码为JSON

var cachePHP = {
    lat: (Number(upDataItems[2])).toFixed(5),
    lon:(Number(upDataItems[3])).toFixed(5),
    msec: (parseInt(upDataItems[7])-parseInt(tz)),
    spd: (Number(upDataItems[0])).toFixed(1),
    hdg: (Number(upDataItems[1])).toFixed(1),
};

dataCacheNew.push(cachePHP);

console.log(JSON.stringify(dataCacheNew));

目前我正在这样做:
$cache=$\u GET['che']$cacheArray=json_decode($cache)$cacheCnt=count($cacheArray)时$cacheCnt等于0;好的,今天早上我试着让它工作起来…没有骰子。我的数据传输正常。但是,我的PHP数组的大小仍然是0。@SamGrant如果您使用字符串来发送get数据(而不是$.get jquery以允许发送对象),那么您可能需要首先使用
“my.PHP?che=“+encodeURIComponent(JSON.stringify(dataCacheNew))
在我的PHP中,我执行
$cache=$\u get['che'”,然后将$cache写入文本文件。文本文件中的数据看起来正常:
[{“rid\”:3158,“uid\”:“1\”,“bid\”:“1\”,{“lat\”:“30.0\”,“lon\”:“-86.0\”,“msec\”:1363165240000,\“spd\”:“4.3\”,“hdg\”:“53.6\”
。但是,在$cache上进行json_解码,然后检查结果数组的大小,yeilds 0。为什么您要自己尝试构建json字符串?是的,这一点肯定会改变为这种方法。为什么您首先要使用json?为什么不将数据作为查询字符串发送到PHP?例如,
my.php?lat=123&lon=456
。我已经发布了每个单独的数组元素,一次发布一个,但是有500多个项目,这会变得很慢…你可以在一个GET数组中发布多个项目
my.php?che[0][lat]=124&che[0][lon]=456&che[1][lat]=789&che[1][lon]=101
,但这实际上可能更难创建(没有像jQuery这样的库),所以JSON在这里是可以的:)
var cachePHP = {
    lat: (Number(upDataItems[2])).toFixed(5),
    lon:(Number(upDataItems[3])).toFixed(5),
    msec: (parseInt(upDataItems[7])-parseInt(tz)),
    spd: (Number(upDataItems[0])).toFixed(1),
    hdg: (Number(upDataItems[1])).toFixed(1),
};

dataCacheNew.push(cachePHP);

console.log(JSON.stringify(dataCacheNew));