3

JSON オブジェクト (正しくフォーマットされていることを検証済み) でデータを取得し、そのデータを firebug コンソールに出力しようとしています。JSONLint (http://jsonlint.com/) を使用して JSON を検証しましたが、ログに記録すると、オブジェクトではなくテキストとしてログが記録されるため、データが JSON オブジェクトに返されないことがわかりました。ajaxの投稿を見ると、JSONタブがあり、オブジェクトが表示されていますが、何らかの理由で取得できません。

私のajax呼び出しは

    $.ajax({
        url:'/coords/base',
        data: { type: obj.type, id: obj.id },
        dataType:'text',
        type:'get',
        async:false,
        success: function(data) {
            console.log(data);
        }
    });

私の戻りデータは次のようになります。

    {   
        "1": {"name":"TEXT","coords":[        
            { "entry":3,"x":15,"y":15 }     
        ]}}

AJAX 呼び出しを変数に設定し、.responseText; を追加すると、呼び出しの最後まで、AJAX 呼び出しのプレーンテキストの戻り値を取得できます。$.serialize() または $.parseJSON() を使用できると思っていましたが、「キャッチされていない例外: 構文エラー、認識されない式」というエラーが表示されます。

最終的な目標は、この responseText からコンテンツを取得し、ファイル全体で JSON オブジェクトを使用することです。この呼び出しは重要なデータをロードするため、同期的に実行する必要があります。

どんな助けでも大歓迎です。

4

2 に答える 2

2

レスポンスをテキストとして扱うように jQuery に明示的に指示します。

$.ajax({
  // ...
  dataType: "text",
  // ...
});

これで、JSON 文字列を取得できます。ただし、後で JS 値に変換する予定がある場合は、やめさせてください。jQuery は自動的にそれを行うことができます。dataTypetoを指定する"json"か、単に jQuery にインテリジェントな推測をさせると、関数にdata渡される引数は解析された JSON オブジェクトになります。success:

于 2011-06-06T20:53:28.987 に答える
1

$.getJson()を使用しない理由

に相当する

 $.ajax({
  url: url,
  dataType: 'json',
  data: data,
  success: callback
});

その後、次のことができるはずです。

$.getJSON('file.json', function(data) {
$.each(data, function(i) {
       console.log(data[i]);
     });
    });

編集

おそらく、私は問題を誤解しています。

EDIT #2 おそらくこの質問が役に立ちます: コールバックを使用しない $getJSON のバージョンはありますか?

これを使用することを提案します:

$.ajax({
    type: 'GET',
    url: 'whatever',
    dataType: 'json',
    success: function(data) { console.log(data);},
    data: {},
    async: false
});

もちろん、これはあなたが持っているもののように見えるので、一歩下がって問題を再分析する必要があると感じています.

于 2011-06-06T20:51:13.013 に答える