1

コードを少し変更したため、サーバーがJSONPOSTリクエストを認識できないようにしています。以前は、forループの反復ごとにPOSTリクエストが作成されていましたが、マルチレベルのJSON配列を含めるように変更しました。

var json=[];

for (var i=0; i < tourList.length; i++){
  var data = tourList[i];
  json.push({latitude: data.position.ab, longitude: data.position.cb, filename: data.title, stopNum: i});
}

var results= JSON.stringify(json);
console.log(json);
console.log(results);

//this code was previously inside the for loop above, moved it outside
$.ajax({
  type: "POST",
  url: "../includes/phpscripts.php?action=postTour",
  data: results,
  datatype: "json",
  beforeSend: function(x){
    if (x && x.overrideMimeType){
      x.overrideMimeType("application/json;charset=UTF-8");
    }
  },
  success: function(data){
    if (data == "success")
      console.log("Tour update successful");
    else 
      console.log("Tour update failed");
  }
});

この時点で、tourListの長さは6で、resultsGoogleマップのマーカークリックに基づいており、Firebugでこれを生成します。

[
  {"latitude":43.682211,"longitude":-70.45070499999997,"filename":"../panos/photos/1-prefix_blended_fused.jpg","stopNum":0},
  {"latitude":43.6822,"longitude":-70.45076899999998,"filename":"../panos/photos/2-prefix_blended_fused.jpg","stopNum":1},
  {"latitude":43.682219,"longitude":-70.450828,"filename":"../panos/photos/3-prefix_blended_fused.jpg","stopNum":2},
  {"latitude":43.68218,"longitude":-70.45088699999997,"filename":"../panos/photos/4-prefix_blended_fused.jpg","stopNum":3}
]

ただし、デバッガーの場合のように、$_POST変数として$_POST表示されるものはありません。type: array[0]したがって、実行するデータセットがありませんjson_decode。私が見ることができることから、JSONは有効です。どうした?

4

2 に答える 2

4

送信されるキー/値はなく、値のみが送信されます

ajaxで次のように変更します。

 data: {results:results},

PHPで

$results=$_POST['results']

今、あなたは使用することができますjson_deocde($results)

于 2012-06-18T19:42:19.453 に答える
2

文字列を投稿変数として送信します。

$.ajax({
  type: "POST",
  url: "../includes/phpscripts.php?action=postTour",
  data: {"json": results},
  dataType: "json",
  beforeSend: function(x){
    if (x && x.overrideMimeType){
      x.overrideMimeType("application/json;charset=UTF-8");
    }
  },
  success: function(data){
    if (data == "success")
      console.log("Tour update successful");
    else 
      console.log("Tour update failed");
  }
});

でjsonにアクセスする$_POST["json"]

PHPから何が返されるかはわかりませんが、jsonの場合、次のようになることはありません。"success"

編集:もう1つの問題。datatypeパラメータはである必要があります。このパラメータは、PHPから返されるdataTypedataTypeのみを定義し、送信するデータ型は定義しません。

于 2012-06-18T19:40:49.433 に答える