【问题标题】:JSON Adding to file problem. Only Object Object appearsJSON 添加到文件问题。只有对象对象出现
【发布时间】:2011-07-26 17:44:40
【问题描述】:

所以我尝试将新节点发布到 json 文件。

这是我的 js:

        var newDate = new Date;             
        var markerId = newDate.getTime();
        var markerData = { 'id': markerId, 'lat':markerId, 'long':markerId };


        $.ajax({ 
            type: 'POST',
            url: "dataPath.php",
            data: {
                    marker: markerData
                },
            dataType: 'json',
            async: false,
            success: function(result)
                {
                    alert("Added OK");
                }               
        });

这里是php文件

$dataPath = 'file_path';
$markerDataFile = 'adauga.json';
$markerText = file_get_contents($markerDataFile);
$markerList = json_decode($markerText,true);
 if( !empty($_POST['marker'])  ){

    $markerData =  $_POST['marker'];
    $markerData['ip'] = $_SERVER['REMOTE_ADDR'];
    $markerData['created'] = time();
    $markerList['markers'][] = $markerData;
    $markerText = json_encode($markerList);
    file_put_contents($markerDataFile, $markerText);
    echo json_encode($markerData);
}else{
    echo "Invalid request";

问题是 JSON 文件显示如下:

{"markers":[{"id":"1310499027672","lat":"47.1405","long":"7.243839999999977","ip":"127.0.0.1","created":1310499032},"1object Object]","1object Object]","1object Object]","1object Object]","1object Object]","1object Object]","1object Object]","1object Object]"]}

【问题讨论】:

  • 您发布的代码对我有用。错误可能在其他地方。

标签: jquery ajax json google-maps object


【解决方案1】:

似乎您的 $markerData 有额外的嵌套对象,需要显式读取并显式添加到 json 中。您需要定位这些对象的属性并一一添加。

如果你回显$_POST['marker'],你会得到[object Object],但如果你这样打印:

echo "<pre>";
print_r($_POST['marker']);
echo "</pre>";

然后您将看到所有标记对象和属性,您可以将它们单独添加到您的 json 中,或者至少在 for 循环中引用它们。

【讨论】:

  • json_encode() 完全能够处理对象和嵌套数组。如果在 JavaScript 中将对象转换为字符串,则只能获得 [object Object]
猜你喜欢
  • 1970-01-01
  • 2021-11-12
  • 1970-01-01
  • 2016-01-09
  • 2018-02-08
  • 1970-01-01
  • 1970-01-01
  • 2020-11-12
  • 1970-01-01
相关资源
最近更新 更多