$ .ajax()处理我的url编码字符串

时间:2010-12-18 18:32:09

标签: jquery ajax urlencode

我有一个url编码的字符串我通过jQuery AJAX API发送到php,它似乎会被自动解码并传递给服务器。

Ajax Call:

var requestXML = '<searchString>red%20ford%5BimpoundState%3Ain%5D</searchString>';
$.ajax({
 data: "query=" + requestXML,
 success: function(response)
 {
     //alerts <searchString>red%20ford%5BimpoundState%3Ain%5D</searchString>
     alert(requestXML);
 }
});

检查chrome dev工具中的请求会显示其被解码alt text

我有点迷失在这里,我读了一些关于jQuery处理数据的内容,但是我通过{processData: false}将其关闭了,但我没有得到任何结果。

- 感谢任何帮助!

UPDATE:

我的后端目前设置为使用url编码值解析xml。

赞:<searchString>red%20ford%5BimpoundState%3Ain%5D</searchString>

当我通过data: {query: requestXML}时,我得到了......

这:%3CsearchString%3Ered%20ford%5BimpoundState%3Ain%5D%3C%2searchString%3E(网址编码为xml)。

真正的问题是,当我生成这个XML时,我会对值进行编码,但jQuery似乎在请求中解码它们。

1 个答案:

答案 0 :(得分:2)

您可以使用data: {query: requestXML},传递参数,并通过jQuery对其进行网址编码。

关键是如果param已经是一个字符串,那么param会按原样附加到url。

引用

  

数据对象,字符串

     

要发送到服务器的数据。它是   转换为查询字符串,如果没有,则转换为   已经是一个字符串。它被附加到了   GET请求的网址。请参阅processData   防止这种自动化的选项   处理。对象必须是键/值   对。如果value是一个数组,那么jQuery   用相同的序列化多个值   基于价值的关键   传统环境(如下所述)。

由于您使用GET方法,因此您的参数会被添加到URL字符串中。解码然后从浏览器发生,而不是从jQ​​uery发生。