4

私が取り組んでいるスクリプトは ajax 呼び出しを行い、Firefox、Chrome、および IE8+ で正常に動作します。しかし、IE7 ではメモリ不足エラーが発生します。メモリは最大120MB。jQuery 1.8.3 を使用しています。このエラーは、jQuery 1.9 および 1.7 でも発生します。

起源:

$.ajax({
    type: "POST",
    contentType: "application/json; charset=utf-8",
    url: 'data.asmx/GetChildren',
    data: '{parent:"program","child":"office","id":' + this.Item_id + '}',
    dataType: 'json',
    success: function (r) {
        var data = r.d.data;
    }
});

これは私がIE7用に取得したプロファイルです:

編集: ソースで更新されました 編集: ようやく問題をもう一度解決する時間がありました。単純なループの問題であることが判明しました。jQuery ajax のせいではありません。

4

6 に答える 6

1

IF 子の数が多い場合、 に返される値はvar dataより多くなります。

JSON 文字列の最大長。デフォルトは 2097152 文字で、4 MB の Unicode 文字列データに相当します。ソースマイクロソフト

サイズは問題ありませんが、文字がそれを超える場合は問題です。:)

于 2013-03-20T12:44:29.887 に答える
0

オブジェクトの代わりに JSON.stringify を送信し、サーバー側でデコードしようとしましたか?

https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/JSON/stringify
于 2013-03-15T21:48:21.527 に答える
0

問題と関係があるかどうかはわかりませんが、データが無効な JSON になる原因が 2 つあります。

parent値と同じように引用符で囲む必要がありidます (文字列を閉じて再度開くだけです)。

したがって、次のようになります。

$.ajax({
        type: "POST",
        contentType: "application/json; charset=utf-8",
        url: 'data.asmx/GetChildren',
        data: '{"parent":"program","child":"office","id":"' + this.Item_id + '"}',
        dataType: 'json',
        success: function (r) {
            var data = r.d.data;
        }
});
于 2013-03-08T15:34:07.783 に答える
0
$.ajax({
    type: "POST",
    contentType: "application/json; charset=utf-8",
    url: 'data.asmx/GetChildren',
    data: '{parent:"program","child":"office","id":' + this.Item_id + '}',
    dataType: 'text',
    success: function (r) {
        var data = (eval("[" + r + "]")[0]).d.data;
    }
});
  • dataType を「text」に変更しました。
  • オブジェクトデータを取得するために eval("[" + textJson + "]")[0] を使用しました。
    • それでも失敗する場合は、「var data = ...」行を「var data = r;」に置き換えます。それも失敗した場合は報告します。
于 2013-03-20T13:58:11.137 に答える
0

jQuery docs に従って、プレーンなオブジェクトを渡すことができるので、代わりにオブジェクトを使用することをお勧めします。また、このように Id を使用してみて、違いがあるかどうかを確認してください。

var id = this.Item_id; //
$.ajax
({
    type: "POST",
    url: 'data.asmx/GetChildren',
    data: {"parent":"program","child":"office","id": id},
    dataType: 'json',
    success: function (r) 
    {
        //Please use console.log(r) and see what is coming back here
    }
});

または単に

var id = this.Item_id; //
$.post("data.asmx/GetChildren", 
{
    "parent":"program",
    "child":"office",
    "id": id
}, function(r)
{
    //console.log(r);
},"json");
于 2013-03-15T16:34:15.243 に答える
0

この問題は、仮想メモリが無効になっている場合に発生する可能性があります。
仮想メモリを有効にするには、次の手順に従います。

[スタート] ボタンをクリックし、[設定] をポイントして、[コントロール パネル] をクリックします。システム アイコンをダブルクリックします。[パフォーマンス] タブで、[仮想メモリ] をクリックします。[仮想メモリの設定を Windows で管理する (推奨)] オプションをクリックします。または、独自の仮想メモリ設定を使用する必要がある場合は、最大サイズに対してできるだけ多くの領域を確保してください。[OK] をクリックします。

于 2013-03-15T09:24:51.393 に答える