私はSpringで作業しており、コントローラーで@ResponseBodyへのajax呼び出しを試みています。
アップデート
さて、言われた変更をajax設定に追加しました。私のパラメータ「jtSearchParam」には、IEでも同じエンコーディングの問題があります。+ 別のエラー 406 が発生しました。応答ヘッダーのコンテンツ タイプが間違っています。
これが私の新しいコードです
コントローラ:
@RequestMapping(method = RequestMethod.POST, consumes="application/json; charset=utf-8", produces="application/json; charset=utf-8")
public @ResponseBody JSONObject getUsers(@RequestParam int jtStartIndex, @RequestParam int jtPageSize,
@RequestParam String jtSorting, @RequestParam String jtSearchParam,
HttpServletRequest request, HttpServletResponse response) throws JSONException{
Gson gson = new GsonBuilder()
.setExclusionStrategies(new UserExclusionStrategy())
.create();
List<User> users = userService.findUsers(jtStartIndex ,jtPageSize, jtSorting, jtSearchParam);
Type userListType = new TypeToken<List<User>>() {}.getType();
String usersJsonString = gson.toJson(users, userListType);
int totalRecordCount = userDao.getAmountOfRows(jtSearchParam);
usersJsonString = "{\"Message\":null,\"Result\":\"OK\",\"Records\":" + usersJsonString + ",\"TotalRecordCount\":" + totalRecordCount + "}";
JSONObject usersJsonObject = new JSONObject(usersJsonString);
return usersJsonObject;
}
ご覧のとおり、コンテンツタイプを設定しましproduces
たが、それは役に立ちません。応答ヘッダーをデバッグすると、次のようになります: (これにより、ブラウザーから 406 Not Acceptable が発生します)
そして私の新しいajax設定:
...
headers: {
Accept : "application/json; charset=utf-8",
"Content-Type": "application/json; charset=utf-8"
},
contentType: "application/json; charset=utf-8",
mimeType:"application/json; charset=UTF-8",
cache:false,
type: 'POST',
dataType: 'json'
...
そして、私のパラメータはIEでも同じように見えます!