0

$.ajax() を使用して ashx ハンドラーを呼び出し、サーバーからの json データを予期するコードがクライアントにいくつかあります。ローカル Web サーバーでアプリケーションを実行すると、FF、IE 6、7、8 ですべて正常に動作します。ただし、アプリケーションをリモート テスト サーバーにデプロイすると、IE が動作しなくなり ($.ajax がパーサー エラーを返します)、FF は引き続き期待どおりに動作します。

私の最初の考えは、私のjsonオブジェクトにはIEが嫌う試行用のコンマが必要であるということでしたが、試行用のコンマがなかったため、それは問題ではありませんでした。次に、コンテンツタイプなどのさまざまなものを app/json から tex/plain に変更しようとしましたが、それでも同じエラーです。

私が奇妙に感じたのは、フィドラーを起動すると IE がリモートで動作し、それ以外の場合はパーサー エラーが発生することです。

誰かが前にこのようなことを経験したことがありますか? ありがとう。

$.ajax({
        type: "GET",
        url: "handlers/GetAsyncResults.ashx",
        contentType: "application/json; charset=utf-8",
        data: {'from': dateFrom, 'to': dateTo, 'accountId' : aId, 'page': currentPage, 'sortField' : sortField, 'sortDirection' : sortDirection},
        dataType: "json",
        success: function(data) { GetAsyncResultsEnd(data); },
        error: function(x, y, z) { GetAsyncResultsErrorHandler(x, y, z); }
    });

編集: コード スニペットを追加しました。

4

5 に答える 5

1

ソート済みです。ありがとう。

サーバー側では、context.Response.Write( 'Our json data' ) を呼び出した後、context.Response.Flush() と context.Response.Close() を呼び出します。.Flush() と .Close() を削除した後、すべてが再び機能し始めました。しかし、IEではなくFirefoxで機能する理由や、フィドラーが魔法のようにIEで機能するようになった理由をまだ説明できません。

ありがとうございました。

于 2009-08-19T04:23:30.173 に答える
0

使ってみてください

contentType: 'application/json',
于 2009-08-19T03:48:32.053 に答える
0

データ型「json」を単純に削除しようとしましたか

これと同じ問題があり、それを削除すると修正されました。これを削除すると、jQuery は「responseXML または responseText のいずれかを成功のコールバックにインテリジェントに渡す」ことができます。

于 2009-09-29T21:13:22.017 に答える
0

JSONが無効になる前に解析エラーが発生した唯一のこと。末尾のスペースを確認したとのことですが、JSON Lintを介して json を実行してみてください。それは私にとってうまくいきました。そのフィドラーが役立つのは興味深いことです。

于 2009-08-19T03:23:30.400 に答える