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'];