0

AJAX 呼び出しから JSON の結果を解析しようとしていますが、サーバーの制限により、1 つの大きな文字列しか取得できません。いくつかの要素が返されますが、消費する必要があるデータはすべて 1 つの要素にスローされます。ここで注意が必要です... firebug を使用すると、応答に JSON タグが含まれ、すべてが適切な JSON オブジェクトのように見えますが、アラートを使用して結果をマップまたは表示しようとすると、それらが二重引用符ではなく単一引用符であることに気付きます引用符。私も引用符を無駄に置き換えようとしました。私はこの時点でかなり困惑しています。

the alert would print out something simular to this: [{'id':'2663','parent':'2663'},{'id':'2664','parent':'2664'},]

        $.ajax({
            url: myURL,
            type: 'GET',
            dataType: "json",
            complete: function(docData) {
                var docResults = docData.responseText;
                alert(docResults);
                $(docResults).each(function(i,val){
                    $.each(val,function(k,v){
                          console.log(k+" : "+ v);     
                    });
                });                
            }
        });
4

1 に答える 1

2

これを修正する正しい方法はサーバー上で修正することですが、dataFilter コールバックを使用してクライアント側で修正する方法があります。

$.ajax({
  url: myURL,
  type: 'GET',
  dataType: "json",
  dataFilter: function(response) {

    // *** Note: this will have to be modified if quotes 
    // *** can be contained within the data. It doesn't appear as though
    // *** that is the case with the data you have provided. 

    return response
      // fix trailing comma
      .replace("},]","}]")
      // fix quotes
      .replace(/'/g,'"'));
  },
  success: function (response) {
    $.each(response,function(){
      console.log(this);
    });
  }
});
于 2013-01-09T19:13:10.220 に答える