0

$.getJSON(url).done(function(data) {});return thisを使用した REST サーバーへの呼び出し

[
   "{"   id":1,
   "medname":"Medication No. 1",
   "qty":"2",
   "pDay":"3",
   "beforeAfterMeal":null
}", "{
   "id":3,
   "medname":"Medication No. 2",
   "qty":"1",
   "pDay":"1",
   "beforeAfterMeal":null
}", "{
   "id":4,
   "medname":"Medication 3",
   "qty":"4",
   "pDay":"1",
   "beforeAfterMeal":null
}
]

Chrome の console.log から。

$.each() を使用すると、3 回ループすることができます (したがって、JSON 配列に 3data[1].idつのエントリがあることがわかります data[1].medname) 。undefinednull

私の疑問は、返された JSON 配列が正しいかどうかです。json_encode() (PHP) から返されるので、正しいと思います。

また、$.parseJSON()結果が出ないようにしました。

多分私は間違った場所を見ていますか?ポインターは非常に役立ちます。

これはサーバーからの生の戻り値です ( json_encode() の後):

[
  "{\"id\":1,\"medname\":\"Medication No. 1\",\"qty\":\"2\",\"pDay\":\"3\",\"beforeAfterMeal\":null}",
  "{\"id\":3,\"medname\":\"Medication No. 2\",\"qty\":\"1\",\"pDay\":\"1\",\"beforeAfterMeal\":null}",
  "{\"id\":4,\"medname\":\"Medication 3\",\"qty\":\"4\",\"pDay\":\"1\",\"beforeAfterMeal\":null}"
]

上記は正しいですか?そうでない場合は、どの部分が実際に間違っているかを知ることは役に立ちます。

アップデート

間違いを犯したところに到達していると思います。

サーバーで何が起こるかを次に示します。エントリごとに、 を使用して個別にエンコードjson_encode()され、配列に追加されます。最後に、配列は再びエンコードされますjson_encode()

明示的に呼び出す前の配列の var_dump を次に示します。json_encode(array);

array (size=3)
  0 => string '{"id":1,"medname":"Medication No. 1","qty":"2","pDay":"3","beforeAfterMeal":null}' (length=81)
  1 => string '{"id":3,"medname":"Medication No. 2","qty":"1","pDay":"1","beforeAfterMeal":null}' (length=81)
  2 => string '{"id":4,"medname":"Medication 3","qty":"4","pDay":"1","beforeAfterMeal":null}' (length=77)

間違いはここですか?最初に各エントリを個別にエンコードしないでください。:/

4

3 に答える 3

3

わかりました、要約します。

ここでのエラーはjson_encode、配列内のすべての要素に対して実行json_encodeしてから、配列全体に対して再度実行したことです。アレイ全体で一度だけ実行する必要があります。

進入禁止

$arr[] = json_encode(array('name' => 'hank'));
$arr[] = json_encode(array('name' => 'jofryhs'));
echo json_encode($arr);

結果:["{\"name\":\"hank\"}","{\"name\":\"jofryhs\"}"]

正しい方法

$arr = array(
    array('name' => 'hank'),
    array('name' => 'jofryhs')
);
echo json_encode($arr);

結果:[{"name":"hank"},{"name":"jofryhs"}]

于 2013-08-12T07:25:09.040 に答える
0

サーバーから文字列値を取得した場合は、それを解析してオブジェクトを取得する必要があります。

$.getJSON(url).done(function(data) {
    var obj = JSON.parse(data);
    var obj1 = obj[0]; 
    // and so on
});
于 2013-08-12T06:58:34.807 に答える