我有一个url编码的字符串我通过jQuery AJAX API发送到php,它似乎会被自动解码并传递给服务器。
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工具中的请求会显示其被解码
我有点迷失在这里,我读了一些关于jQuery处理数据的内容,但是我通过{processData: false}
将其关闭了,但我没有得到任何结果。
- 感谢任何帮助!
我的后端目前设置为使用url编码值解析xml。
赞:<searchString>red%20ford%5BimpoundState%3Ain%5D</searchString>
当我通过data: {query: requestXML}
时,我得到了......
这:%3CsearchString%3Ered%20ford%5BimpoundState%3Ain%5D%3C%2searchString%3E
(网址编码为xml)。
真正的问题是,当我生成这个XML时,我会对值进行编码,但jQuery似乎在请求中解码它们。
答案 0 :(得分:2)
您可以使用data: {query: requestXML},
传递参数,并通过jQuery对其进行网址编码。
关键是如果param已经是一个字符串,那么param会按原样附加到url。
引用
数据(对象,字符串)
要发送到服务器的数据。它是 转换为查询字符串,如果没有,则转换为 已经是一个字符串。它被附加到了 GET请求的网址。请参阅processData 防止这种自动化的选项 处理。对象必须是键/值 对。如果value是一个数组,那么jQuery 用相同的序列化多个值 基于价值的关键 传统环境(如下所述)。
由于您使用GET
方法,因此您的参数会被添加到URL字符串中。解码然后从浏览器发生,而不是从jQuery发生。