0

Ajaxを使用してサーバーからデータを取得します。

返されたデータ(firebugから):

{"users":[{"name":"some name", "age":17},{"name":"some name2", "age":25}]}

やってみると

$.post('server.php', function(data){
    var users = eval(data).users;
    alert(users[0].name);
});

私はfirebugに乗ります:

Uncaught SyntaxError: Unexpected token )

何か助けはありますか?

4

4 に答える 4

10

evalは使用しないでください-それは悪です

代わりに、単に「json」のパラメーターを使用してください。

$.post('server.php', function(data) {
    alert(data.users[0].name);
}, "json");

ヘッダーが適切であれば、jsonパラメーターも必要ありませんが、jQueryはそれをJSONとして受信して解析する必要があります。

于 2012-06-06T11:22:29.393 に答える
1

一重引用符で囲まれた括弧内のデータをエンコードする

 $.post('server.php', function(data){
        var users = eval('('+data+')');
        alert(users[0].name);
    });
于 2012-06-06T11:22:33.393 に答える
0

json文字列を角かっこで囲む必要があります

$.post('server.php', function(data){
    var users = eval('('+data+')').users;
    alert(users[0].name);
});

デモ

于 2012-06-06T11:17:53.267 に答える
0

わかりませんeval()が、機能がよくわからないのかもしれません...

この作品で:

var data = {"users":[{"name":"some name", "age":17},{"name":"some name2", "age":25}]};
alert(data.users[0].name);

ループすることもできます:

$.each(data.users, function (i, user_obj){
    alert(user_obj.name);
});

このデモをご覧ください。

dataType: "json"適切に解析されるように、ajaxリクエストにを追加することをお勧めします。

于 2012-06-06T11:19:23.123 に答える