JQuery AJAX没有向我的服务器发送UTF-8,只在IE中发送

TIM*_*MEX 24 javascript ajax jquery utf-8 internet-explorer-8

我发送UTF-8,日文文本到我的服务器.它适用于Firefox.我的access.log和标题是:

/ajax/?q=%E6%BC%A2%E5%AD%97
Accept-Charset  ISO-8859-1,utf-8;q=0.7,*;q=0.7
Content-Type    application/x-www-form-urlencoded; charset=UTF-8
Run Code Online (Sandbox Code Playgroud)

但是,在IE8中,我的access.log说:

/ajax/?q=??
Run Code Online (Sandbox Code Playgroud)

出于某种原因,IE8正在将我的AJAX调用变成问号.为什么!?我根据一些教程添加了scriptCharset和ContentType,但仍然没有运气.

这是我的代码:

$.ajax({
    method:"get",
    url:"/ajax/",
    scriptCharset: "utf-8" ,
    contentType: "application/x-www-form-urlencoded; charset=UTF-8",
    data:"q="+query ...,
    ...
    })
Run Code Online (Sandbox Code Playgroud)

Gab*_*oli 54

尝试使用编码查询参数 encodeURIComponent()

data:"q="+encodeURIComponent( query )
Run Code Online (Sandbox Code Playgroud)

由于bobince在他的评论中非常正确地指出,如果你使用对象表示法将参数传递给ajax方法,它将处理编码本身..

所以

data:{ q : query }
Run Code Online (Sandbox Code Playgroud)

将使jQuery处理编码..

  • 是的,这是将`{q:query}`之类的映射传递给`ajax()`并让jQuery为您担心编码的一个很好的理由. (3认同)