Parsererror with json and PHP


Parsererror with json and PHP

这是我第一次处理JSON,但我无法做到这一点:

JavaScript:

var obj = new Object();
obj.latitude = sessionStorage.lat;
obj.longitude  = sessionStorage.lng;
var jsonString= JSON.stringify(obj);
var post_data = "coords="+jsonString;
$.ajax({
url: "index.php",
type: "POST",
data: post_data,
dataType: "json",
success: function(){
    alert("postdone!");
},
error: function(){
    alert("posterror!")
}
});

PHP:

if (isset($_POST['data'])) {
    $jsondata = json_decode($_POST['data'],true);
    echo $jsondata;
}

我总是听到"posterror!"。。。

您已经完成了一些

数据:对象必须是键/值对http://api.jquery.com/jquery.ajax/

JS

var obj = new Object();
obj.latitude = sessionStorage.lat;
obj.longitude  = sessionStorage.lng;
var jsonString= JSON.stringify(obj);
//does not work, you had to get rid of the string in before dejsoning it in php
var post_data = /*"coords="+*/jsonString;
$.ajax({
 url: "index.php",
 type: "POST",
 //watch it here
 data: {"data": post_data},
 //does not work if you do not send json back
 dataType: /*"json"*/ "html",
 success: function(){
     alert("postdone!");
 },
 error: function(){
     alert("posterror!")
 }
});

PHP

现在应该工作

if (isset($_POST['data'])) {
    $jsondata = json_decode($_POST['data'],true);
    //Where should that be good for?
    echo $jsondata;
}

您应该使用此代码在php中发送数据

type: "POST",
data: {data:post_data},

http://php.net/manual/en/function.json-decode.php

并在PHP中转换为json,您可以为PHP 解码json

USe This

var obj = new Object();
obj.latitude = sessionStorage.lat;
obj.longitude  = sessionStorage.lng;
var post_data = JSON.stringify(obj);
$.ajax({
url: "index.php",
type: "POST",
data: post_data,
dataType: "json",
success: function(){
    alert("postdone!");
},
error: function(){
    alert("posterror!")
}
});
<?php 
// php file
  if (isset($_POST['data'])) {
    $jsondata = json_decode($_POST['data'],true);
    echo $jsondata;
}
?>

代码可以简化一点

var post_data = {
    coords: {
        latitude: sessionStorage.lat,
        longitude: sessionStorage.lng
    }
}

$.ajax({
    url: "index.php",
    data: JSON.stringify({data: post_data}),
    contentType: 'application/json',
    success: function(){
        alert("postdone!");
    },
    error: function(){
        alert("posterror!")
    }
});

至于php:

if (isset($_POST['data'])) {
    $jsondata = json_decode($_POST['data'], true);
    echo $jsondata;
}