0

初めてjsonを使っているので、これはちょっとばかげた質問かもしれません。

json を返すための私の PHP コードは次のとおりです。

$query="SELECT * FROM user_db WHERE rest_id='$rest_id'";
$result=mysqli_query($dbc, $query);
$row=array();
while($r = mysqli_fetch_assoc($result)) {
    $rows{'Users'][] = $r;
}
echo json_encode($rows);

これは以下を返します。

{"Users":
[{"user_id":"1361453832p3y","name":"","username":"sideshow","password":"sideshow","user_type":"1","rest_id":"1361453832fxL","email":""},
{"user_id":"1361523362ANq","name":"Sharon","username":"Sharon45","password":"Sharon45","user_type":"3","rest_id":"1361453832fxL","email":""},
{"user_id":"1361523653SXp","name":"Heather F","username":"fishface","password":"golliwog","user_type":"3","rest_id":"1361453832fxL","email":""}]}

私がやろうとしているのは、結果をループしてページに追加することだけです。

私の現在のJQueryは次のとおりです。

var name="";
        var username="";
        var password="";
        var user_type="";
        var output="";
        var obj=$.parseJSON(html);

        $.each(obj, function(){
            output+="<p><strong>"+this['name']+"</strong></p>";
            output+="<p>Username: "+this['username']+" Password: "+this['password']+"</p>";
            output+="<hr />";
        });


        $('.user_holder').html(output);

これは、各フィールドを 3 回エコーアウトするだけです。各jsonフィールドをループする方法が見つかりません.....

4

7 に答える 7

3

これを試すことができます:

var name="";
var username="";
var password="";
var user_type="";
var output="";

$.each($.parseJSON(html).Users, function(){
    output+="<p><strong>"+this['name']+"</strong></p>";
    output+="<p>Username: "+this['username']+" Password: "+this['password']+"</p>";
    output+="<hr />";
});

ご覧のとおり、唯一の違いは、オブジェクト全体ではなくプロパティ$.eachを渡すメソッドにあります。Users

こちらがoutput

<p><strong></strong></p><p>Username: sideshow Password: sideshow</p><hr /><p><strong>Sharon</strong></p><p>Username: Sharon45 Password: Sharon45</p><hr /><p><strong>Heather F</strong></p><p>Username: fishface Password: golliwog</p><hr />
于 2013-02-22T10:47:15.740 に答える
1

これを変える

$.each(obj, function(){

これに:

$.each(obj.Users, function(){
于 2013-02-22T10:48:16.667 に答える
0

各 JSON オブジェクトをループして、データを含むインデックスを参照し、キーを参照する必要があります。

例えば

 obj['Users'][0]['Username']

ユーザー名の最初のインスタンスを返します。

そのため、ネストされた for ループを使用してデータをループする必要があります。

于 2013-02-22T10:45:08.643 に答える
0

私があなたを正しく理解しているなら、あなたはそれを釘付けにしています。obj の Users フィールドを参照していないだけだと思います。

$.each(obj.Users, function(){
    output+="<p><strong>"+this['name']+"</strong></p>";
    output+="<p>Username: "+this['username']+" Password: "+this['password']+"</p>";
    output+="<hr />";
});

console.log はあなたの友達です:)

console.log(obj)

obj が何であるかを調べて、Users フィールドがあることを確認すると、笑ってしまうでしょう :)

console.log については、次の質問を参照してください: console.log とは何ですか?

于 2013-02-22T10:48:55.583 に答える
0

試す

$.each(json,function(i,j){
    $(j).each(function(k,v){    
     console.log(v.user_id);
     console.log(v.username);        
    });
});

デモ

于 2013-02-22T10:49:46.433 に答える
0

試す:

$.each(obj.Users, function(){
        output+="<p><strong>"+this['name']+"</strong></p>";
        output+="<p>Username: "+this['username']+" Password: "+this['password']+"</p>";
        output+="<hr />";
    });
于 2013-02-22T10:53:04.033 に答える
0

このように試しましたか?

         for(var i=0; i < obj.Users.length; i++){
            var username  =obj.Users[i].username;
                //TODO get remaining value of  obj.Users[i];

        } 
于 2013-02-22T10:53:36.850 に答える