0

私の質問は、jQuery ajax getを使用すると、応答本文でデータを取得していますが、成功関数に渡されません。どうすればそれを機能させることができますか?

私はajaxputを作成していますが、ie9では機能しません(他のブラウザーで機能します)ので、テストのためにそのように変更しました。

    $.ajax({
        async : false,
        type: 'PUT',
        contentType: 'application/json',
        url:updateUrl + "?_" + new Date().getTime(),
        data: JSON.stringify(model),
        cache: false,
        dataType: "json",
        dataFilter: function(data) {
            var resp = eval('(' + data + ')');
            return resp;
        },
        success: function(data, status, xhr) {
            alert("success> " + data.property);
            alert(typeof data);
            r = resultResponse(data);
         },
        error: function(data, status, xhr) {
            alert("error> " + data.responseText);
            try {
                r = error($.parseJSON(data.responseText));
            } catch (err) {
                //Handle error
            }
        }
    });

データは未定義として警告しています。私のプットデータは正しく送信されています。サーバー側は正常に機能し、クライアントに応答を送信しますが、データの代わりに未定義を取得します。いくつかのテストの後、私は問題に気づきました:

つまり、9応答本体でネットワーク通信パケットをキャプチャするときは、私が欲しいものです。ただし、成功関数はそれを処理できません。必要に応じて、サーバーに関する詳細情報を提供できます(Javaでjackson json mapperを使用する代わりに、応答にデータを書き込むときに機能させることができます-それは機能していましたが、唯一の違いは、応答時に機能するバージョンが含まれていなかったことですヘッダー:キー値コンテンツタイプapplication / json; charset = UTF8)

問題はクライアント側で処理できると思いますが、サーバー側では処理できないと思います。何か案は?

編集:私はそのスタイルを試しました:

$.ajax({url: "/url",
  dataType: "text",
  success: function(text) {
    json = eval("(" + text + ")");
    // do something with JSON
  }
}); 

ただし、応答ヘッダーはまだ次のとおりです。

キー値コンテンツタイプapplication/json; charset = UTF8

4

1 に答える 1

0

問題は間違った文字セットでした。それはUTF(UTF-8ではなく)でした。

于 2012-08-02T11:50:19.770 に答える