2010-11-22 9 views
0

WebサーバーからJSONを戻していますが、いずれのキーも参照できません。 alert(response);しかし、私は個別にキーを参照するようにしたいので、それは駄目だん:完全な文字列を警告undefinedJSONを返す際にキーを参照できません

alert(response.voteid); 

response.message/voteidアラートをアラート

{"voteid":110.0,"message":"Your request was processed.","success":true} 

が正常に動作します。私の最終目標は、JSONからvoteidキーを取得しても動作しないアンカー、それを追加することである - 完全な文字列または単にキーで:

success: function(response) { $(".fav").data("voteid", response.voteid) } 
<a class="fav" data-voteid=""> 

サイドノートでは、私が「ドン投票権の最後に0がある理由を知っている。数字を文字列として返すよ!

EDIT:ただし、dataTypeをJSONに設定することで修正されましたが、データはアンカーのdata-voteid属性に追加されません。

EDIT .idataの代わりに.attrを使用してidを追加すると、多くの皆さんありがとうございます!

+0

「id」という浮動小数点フィールドを持つのは間違いです。 – cHao

+0

cHao、なぜそれが起こっているのかわかりません。私は文字列を返す。私はこれがどこから来ているのか分かりません! – Mohamad

+0

@cHao:JavaScriptには整数がありません。どちらもJSONではありません。しかし、「110.0」は奇妙な選択と思われる。 :) –

答えて

2

コードの一部を除外しましたが、ご要望に応じてdataType:'json'を設定していないと思われます。

それとも、手動で$.parseJSONを呼び出すことができます。

success: function(response) { 
    var parsed = $.parseJSON(response); 
    $("fav").data("voteid", parsed.voteid); 
} 

はJSON テキストであることを覚えておいてください。

+0

'スクリプト'が 'json'に変更されました。それは固定されていますが、それでもアンカーのデータにはvoteid = ""が追加されません! – Mohamad

+1

@mel、@patrick dw: 'dataType'を完全にオフにして、サーバが正しいコンテンツタイプを返すようにする方が良いでしょう。 –

1

JSONをオブジェクトとして戻したい場合は、JSONを文字列として戻している可能性があります。以下を試してください:

var responseObject = eval(response);その後、

警告(responseObject.voteId)

とevalは良いアイデアではなく、どのようにそれを回避するには理由のためのgoogle。

+0

JSONの '解析'を含む 'eval'はほとんど使われません。それは簡単ですが、非常に危険です。 – Phrogz

+0

それはそれを壊した 'json'の代わりに 'script'でした:/ - しかし、値はacnhorのdata-voteid属性に追加されません! – Mohamad

1

ajax呼び出しでjsonとしてデータ型を指定していますか?おそらくあなたはキーにアクセスすることができない文字列としてJSONを返します。 JSONを指定した場合、jqueryは文字列をオブジェクトに変換します

+0

いいえ、それは今作動します!それについては、 "スクリプト" – Mohamad

関連する問題