0

json文字列である文字列の応答を解析しようとしています。私のWebアプリの別のページでは、次のコードが正常に機能しています。しかし、私が使用している現在のページでは機能しません。コードは次のとおりです。

 $.ajax({
    type: 'POST',
    url: 'http://mywebapp.com/sendnames',
    data: {},
    success: function(result) {
        alert('result: '+result);
        var obj = jQuery.parseJSON(result);
        alert('obj: '+obj);

    // doing rest of stuff  
    }

});

最初のアラートが来て、正しい結果を示します。結果は次のとおりです。

 [
   "Richard",
   "Eric",
   "John"
 ]

しかし、2番目のアラートは来ません。私はそれをチェックしました、それは有効なjsonです。このjsonをjQuery.parseJSON()で解析できないのはなぜですか。前もって感謝します。

4

4 に答える 4

2

戻り値の型を追加してみてください: dataType : json

$.ajax({
        type: 'POST',
        url: 'http://mywebapp.com/sendnames',
        data: {},
        dataType:'json',
        success: function(result) {
          console.log('result: '+result);        
        // doing rest of stuff  
        }

    });

"json":
レスポンスを JSON として評価し、JavaScript オブジェクトを返します。jQuery 1.4 では、JSON データは厳密な方法で解析されます。不正な形式の JSON は拒否され、解析エラーがスローされます。(適切な JSON 形式の詳細については、json.org を参照してください。) "jsonp": JSONP を使用して JSON ブロックに読み込みます。「?callback=?」を追加します。URL の末尾に追加して、コールバックを指定します。キャッシュ オプションが true に設定されていない限り、クエリ文字列パラメーター "_=[TIMESTAMP]" を URL に追加してキャッシュを無効にします。 http://api.jquery.com/jQuery.ajax/

于 2012-08-31T08:28:31.070 に答える
1

$.ajaxで置き換え$.getJSONます。$.parseJSONこれは内部的にトリガーされることが保証されているため、resultすでに目的の JS オブジェクトになっています。

$.getJSON({
   type: 'POST',
   url: 'http://mywebapp.com/sendnames',
   data: {},
   success: function(obj) {
      alert('obj: '+obj);
      // doing rest of stuff  
   }
});
于 2012-08-31T08:32:06.040 に答える
0

ここで受け入れられた答えを参照してください

オブジェクトを解析しています。オブジェクトではなく文字列を解析します。jQuery.parseJSONは文字列のみを取ります。

$.ajaxすでにデータを解析しているため、 resultJavascriptオブジェクトは文字列ではありません。parseJSON文字列パラメータが必要です。

FROM DOCS.ajax()データ型の詳細はこちら):

jsonタイプは、フェッチされたデータファイルをJavaScriptオブジェクトとして解析し、構築されたオブジェクトを結果データとして返します。そのために、ブラウザがサポートしている場合はjQuery.parseJSON()を使用します。それ以外の場合は、関数コンストラクターを使用します

于 2012-08-31T08:39:26.917 に答える
0

を追加してみてくださいdataType:'text'。結果として文字列が返されます。コードは期待どおりに実行されます。

于 2012-08-31T08:36:30.193 に答える