0

JQueryを使用してエコーおよびデコードできる配列を返す非常に小さなPHPスクリプトに対してAJAX呼び出しを行おうとしています。これが私が持っているものです:

AJAXによって呼び出された私のPHPページ:

$web_q=mysql_query("select * from sec_u_g where uid='$id' ");
$rs = array();
while($rs[] = mysql_fetch_assoc($web_q)) {
}
print_r(json_encode($rs));

これは以下を出力します:

[{"id":"3","uid":"39","gid":"16"},{"id":"4","uid":"39","gid":"4"},{"id":"5","uid":"39","gid":"5"},{"id":"6","uid":"39","gid":"6"},{"id":"7","uid":"39","gid":"7"},{"id":"8","uid":"39","gid":"8"},{"id":"9","uid":"39","gid":"9"},false] 

私は1つの最後の「false」を理解していません..しかし、私はJQueryに送信して使用します:

$.each(json.result, function(i, object) {
$.each(object, function(property, value) {
    alert(property + "=" + value);
});
});

これは失敗します。私はそれ自体で「結果」を警告しようとします。これは次のように設定されます。

  $.post("get_ug.php",{id:txt},function(result){
  });

私の出力アラートは次のとおりです。

1)  The key is '0' and the value is '['
2)  The key is '1' and the value is 'f'
3)  The key is '2' and the value is 'a'
4)  The key is '3' and the value is 'l'
5)  The key is '4' and the value is 's'
6)  The key is '5' and the value is 'e'
7)  The key is '6' and the value is ']'
8)  The key is '7' and the value is '
    '    (<-- Yes the line break is there in the alert)

さまざまなアイデアやスクリプトを試すことに疲れ果てています。自分で区切り文字を設定し、自分の配列を連結してカスタムスクリプトでデコードする以外に、誰かアイデアはありますか?ありがとうございました!!

4

2 に答える 2

0

これfalseはwhileループから来ます:

while($rs[] = mysql_fetch_assoc($web_q))

最後の反復で、mysql_fetch_assocfalseを返します。これは$ rs []に挿入され、jsonへの道を見つけます。
これは、jsonが無効になる原因でもあります。ループに一時変数を使用して、
これを取り除きます。 その後はすべてうまくいくはずです。false

編集(一時変数を使用してコードを改訂):

$web_q=mysql_query("select * from sec_u_g where uid='$id' ");
$rs = array();
$result; //temporary variable to hold the current 'fetch' result.
while($result = mysql_fetch_assoc($web_q)) {
    array_push($rs, $result); //push the result into the array only if it
                              //passed the loop condition.
}
print_r(json_encode($rs));

注:array_push($rs, $result);もちろん、 代わりにを使用することもできます$rs[] = $result;

編集2(jQuery + json):
jsonオブジェクトを解析するために、ajax呼び出しを作成する方法の例を次に示します。

$.ajax({
    url: "get_ug.php",
    data: {
        id: txt
    },
    type: "POST",
    dataType: "json", //important (!!) - this makes sure the received data is parsed as json.
    success: function(data){
        //'data' is the resulting json object which is received from your php file.
        //use it to access your data.
        console.log( data );
    }
});
于 2012-07-06T20:12:05.937 に答える
0

なぜprint_rを使用して結果を印刷しているのですか?もはや再帰オブジェクトではないので、print またはecho 十分なはずです。

于 2012-07-06T21:12:06.867 に答える