Php Can';t处理jquery ajax发送的json

Php Can';t处理jquery ajax发送的json,php,mysql,jquery,Php,Mysql,Jquery,我似乎无法使以下各项发挥作用 restoJSON = { "name" : "Bloesem", "qName" : "bloesem", "address" : "Binnen Dommersstraat 13", "area" : "Jordaan", "tel" : "770 0407", "cuisine" : "European", "comment" : "Ver``rassingsmenu - slow service but 'gezellig' atmosphere", "bo

我似乎无法使以下各项发挥作用

restoJSON = { "name" : "Bloesem", "qName" : "bloesem", "address" : "Binnen Dommersstraat 13", "area" : "Jordaan", "tel" : "770 0407", "cuisine" : "European", "comment" : "Ver``rassingsmenu - slow service but 'gezellig' atmosphere", "booking" : "", "website" : "http://www.restaurantbloesem.nl/", "link" : "/?p=6", "rating" : 3, "price" : "3", "lat" : "52.382917", "lng" : "4.8854370000000245", "heading" : "0", "pitch" : "0", "zoom" : "0" };

     jQuery.ajax({
       type: "POST",
       url: "updateDatabase.php",
       data: restoJSON,
       dataType: "text",
       success: function(response, stat)
       {
         console.log("Response: " + response);
       },
       error: function()
        {
           console.log(arguments);
        }       
     });
然后UpdateDatabase.php在这些行上有用于调试的变体

echo "name: " . $_POST['qName'];
$json = json_decode($_POST['data'], true);
echo " " . $json['qName'];
foreach($_POST as $key=>$val) {
echo $key . "-x-" . $val;
}
我是一个相对游手好闲的人,通过抄袭这个论坛的建议来完成工作,而不是完全理解。控制台日志如下-请注意它是如何在链接行中拆分=的


如果你看你的代码,你会回显两个字符串。您需要删除其中一个,很可能是
echo$query

因此,尝试改变:

echo "name: " . $json['qName'];
echo $query;
只是:

echo "name: " . $json['qName'];
restoJSON
的末尾还缺少一个分号,并且没有使用
var
将其声明为变量

更改此项:

restoJSON = { "name" : "Bloesem", "qName" : "bloesem", "address" : "Binnen Dommersstraat 13", "area" : "Jordaan", "tel" : "770 0407", "cuisine" : "European", "comment" : "Ver``rassingsmenu - slow service but 'gezellig' atmosphere", "booking" : "", "website" : "http://www.restaurantbloesem.nl/", "link" : "/?p=6", "rating" : 3, "price" : "3", "lat" : "52.382917", "lng" : "4.8854370000000245", "heading" : "0", "pitch" : "0", "zoom" : "0" }
$json = json_decode($_POST['data'], true);
致:

最后,以
key/value
对发送数据,因此没有理由对它们进行
json\u decode()

更改此项:

restoJSON = { "name" : "Bloesem", "qName" : "bloesem", "address" : "Binnen Dommersstraat 13", "area" : "Jordaan", "tel" : "770 0407", "cuisine" : "European", "comment" : "Ver``rassingsmenu - slow service but 'gezellig' atmosphere", "booking" : "", "website" : "http://www.restaurantbloesem.nl/", "link" : "/?p=6", "rating" : 3, "price" : "3", "lat" : "52.382917", "lng" : "4.8854370000000245", "heading" : "0", "pitch" : "0", "zoom" : "0" }
$json = json_decode($_POST['data'], true);
致:


通过jQuery.ajax发送数据时,POST变量设置为restoJSON中的键/值。因此,在PHP中不需要JSON解码。只要简单地做:

echo "name: " . $_POST['qName'];

要查看“qName”是否已通过。另外,您的UPDATE语句目前似乎没有设置任何字段(请参阅:)。

您可能只需要使用$.post()来简化流程。您认为我传递的句子和特殊字符会导致问题吗?只要字符转义(如果需要),这应该不会是问题。您是否也在查看POST请求,以确保正确发送数据?看起来restoJSON是作为字符串传递给jQuery.ajax的,而不是基于您发布的输出的对象。这就是为什么将“=”替换为“-x-”。好的,所以我放弃了使用JSON和:分隔符以及内容周围的“”。现在我使用=和escape()以及所有的函数。我觉得我错过了什么,但最终的结果是有效的
echo "name: " . $_POST['qName'];