私の質問は、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