【问题标题】:Ajax Call Trouble with Accents带有口音的 Ajax 调用问题
【发布时间】:2017-09-11 08:25:50
【问题描述】:

我已经在我的 ajax 调用中尝试了以下行,因为它在整个互联网上都被建议:

contentType: "application/json; charset=ISO-8859-1"

但它并没有改变任何东西。每当我使用带有重音符号的字符串参数(例如 società)从 ajax 进行调用时,在我的控制器(我使用的是 Java,spring 框架),我将其接收为 Società强>。我已经尝试了第一个 UTF-8,这是默认的(据我所知),但没有。这是我的全部功能:

function foo(customer, society) {
    $.ajax({
        url: 'notMappedAcoStaffing.do',
        type: "GET",
        contentType: "application/json; charset=ISO-8859-1",  
        data: { customer: customer, society: society},
        success: function(data) {   $('#content').html(data);    },
        error: function(error) { alert("error" + error); }
    });
}

我将后端的值作为

@RequestMapping(method = RequestMethod.GET)
public ModelAndView fooController(@RequestParam("customer") final String customerParam, @RequestParam(value="society",required=false) Integer societyParam) {...}

有没有办法解决这个问题? 提前感谢您的帮助。

更新:我仍然不知道为什么我在控制器上收到它作为参数失真。但是,当我将其转换如下:How do I convert between ISO-8859-1 and UTF-8 in Java? 时,一切都很好。看到它有效,我再次尝试在我的 ajax 调用中设置 UTF-8,但没有成功......它解决了我的问题,但老实说我不喜欢这种方式。如果您在 ajax 调用方面有更好的解决方案,请与我分享。谢谢

【问题讨论】:

标签: java jquery ajax spring-mvc


【解决方案1】:

部分问题在于您使用的是HTTP GET,这基本上意味着您的数据将嵌入到 URL 本身中,即查询字符串 (http://example.org/?customer=foo&society=bar) 中。这可能会导致使用特殊字符时出现问题。

特别是,contentType 属性涉及您根本没有的请求的正文,因此目前它几乎没有影响。

考虑使用HTTP POST 发送数据(并删除您的自定义contentType),这样您就可以更好地控制数据的编码 - 然后在请求正文而不是 URL 中发送数据。它可能会彻底解决您的问题,或者您可能需要将服务器配置为使用与客户端相同的编码 - 我建议双方都使用 UTF-8。

【讨论】:

  • 非常感谢。我也一直在尝试 Post 但它不起作用,我也尝试使用 JSON.stringify .. 但我将 contentType 留在那里。当我删除它时,它开始工作得非常顺利和精细。再次感谢!
猜你喜欢
  • 2016-11-25
  • 1970-01-01
  • 1970-01-01
  • 2021-10-05
  • 2010-10-05
  • 2014-01-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多