2

以下を機能させることができないようです

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);
        }       
     });

次に、updateDatatbase.phpには、デバッグ用にこれらの行にバリエーションがあります

echo "name: " . $_POST['qName'];
$json = json_decode($_POST['data'], true);
echo " " . $json['qName'];
foreach($_POST as $key=>$val) {
echo $key . "-x-" . $val;
}

私は比較的おとなしい人で、完全に理解するのではなく、このフォーラムから提案をコピーすることで物事を成し遂げています。コンソールログは以下のとおりです-リンク行の=がどのように分割されているかに注意してください

Response: name: 
{"name":"Bloesem",
"qName":"bloesem",
"address":"Binnen_Dommersstraat_13",
"area":"Jordaan",
"tel":"770_0407",
"cuisine":"European",
"comment":"Verrassingsmenu_-_slow_service_but_'gezellig'_atmosphere",
"booking":"",
"website":"http://www_restaurantbloesem_nl/",
"link":"/?p-x-6\",
\"rating\" : 3,
\"price\" : \"3\",
\"lat\" : \"52.382917\",
\"lng\" : \"4.8854370000000245\",
\"heading\" : \"0\",
\"pitch\" : \"0\",
\"zoom\" : \"0\"
}
4

2 に答える 2

0

コードを見ると、2 つの文字列がエコーされています。それらの 1 つを削除する必要があります。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" }

に:

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" };

最後に、データをペアとして送信するkey/valueため、理由はありませんjson_decode()

これを変える:

$json = json_decode($_POST['data'], true);

に:

$json = $_POST;
于 2012-12-22T07:56:06.377 に答える
0

データが jQuery.ajax 経由で送信されると、POST 変数が restoJSON のキー/値に設定されます。したがって、PHP では JSON デコードは必要ありません。単純に次のようにします。

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

「qName」が通過したことを確認します。また、UPDATE ステートメントは現時点でフィールドを設定していないようです ( PHP Update Syntaxを参照)。

于 2012-12-22T08:05:17.733 に答える