jquery – Spring:在IE中对@ResponseBody param编码的Ajax调用失败

前端之家收集整理的这篇文章主要介绍了jquery – Spring:在IE中对@ResponseBody param编码的Ajax调用失败前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我正在使用Spring并尝试在我的控制器中对@ResponseBody进行ajax调用.

UPDATE

好的,我把我告诉的更改添加到了我的ajax设置中.
我的参数“jtSearchParam”在IE中仍然存在相同的编码问题.
  我得到了另一个错误,406,响应Header的内容类型错误.

这是我的新代码

控制器:

@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

所以当你看到我在产品中设置内容类型但这没有帮助.
如果我调试响应头它看起来像这样:
(这会导致浏览器无法接受406)

我的新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中看起来仍然一样!

最佳答案
好的,json内容类型的问题可以像这样解决

使用ResponseEntity,您可以更改响应头的内容类型,这样ajax可以正确解释json对象,并且您不会得到406 Http错误.

@RequestMapping(method = RequestMethod.POST)
public ResponseEntity

编码问题可以像这样解决

IE不会编码你的“ü,ä等”正确的,它只是将它添加到您的URL,如下所示:“jtSearchParam =wü”但它实际上应该是这样的:“jtSearchParam =wü”(如果不是这样,当你在服务器端时,你会得到编码错误使用IE)

因此,无论您在URL中添加某些值,请确保在将该值实际添加到URL之前对该值使用JavaScript方法encodeURI
例:

是encodeURI(jtSearchParam)

猜你在找的jQuery相关文章