jQuery AJAX调用未定义特殊字符错误
我尝试使用jQuery进行AJAX调用,数据具有特殊字符,例如jQuery AJAX调用未定义特殊字符错误,jquery,ajax,character,Jquery,Ajax,Character,我尝试使用jQuery进行AJAX调用,数据具有特殊字符,例如{'data':'test'}。它似乎一开始就没能传递这些数据。如果我只通过{'data':'test'}就可以了。encodeURIComponent和JSON.stringify在此失败,原因是特殊字符/ 有人能帮忙吗?谢谢 $.ajax({ type: "POST", url: "services.aspx", data: "data=" + encodeURIComponent(JSON.stringi
{'data':'test'}
。它似乎一开始就没能传递这些数据。如果我只通过{'data':'test'}
就可以了。encodeURIComponent和JSON.stringify在此失败,原因是特殊字符/
有人能帮忙吗?谢谢
$.ajax({
type: "POST",
url: "services.aspx",
data: "data=" + encodeURIComponent(JSON.stringify(obj)),
dataType: "text",
error: function(xhr, textStatus, errorThrown) {
alert("ERROR"); },
success: function(data)
{
}
});
问候,
David我在firebug中对此进行了一次快速测试,它实际上运行得很好,数据已经发送,所以听起来您的问题与ajax调用本身无关,而是与您发布到的函数有关。这种类型的问题有时很难调试,因为有太多组件涉及到您的数据,而且每种方法都需要自己的引用或转义方式,以确保您的数据按预期的方式传递 首先要做的是确保数据正确地到达ajax函数。在ajax函数之前,使用
console.log
或alert()
查看数据的外观。根据数据来自何处,在该点上甚至可能不正确
您可以使用Firebug的网络面板查看实际向服务器发出的请求,以查看离开浏览器的数据。如果您有权访问服务器,则可以在那里的ajax函数处理程序中进行调试,以查看它接收到的数据
基本上,您必须从数据开始的地方走到数据错误的地方,并找到它错误的转折点。假设
encodeURIComponent(JSON.stringify(obj))
中的obj
是字符串或JSON对象,那么您的脚本应该可以工作
如果obj={'data':'test'}
那么您就不需要encodeURIComponent
了,只需执行数据:JSON.stringify(obj)
如果您能发布更多的代码,可能会有更大的帮助。我不是asp开发人员,但我在通过jquery ajax处理html帖子时遇到了同样的问题,我曾经这样发布:
var data = 'id='+ escape(currid) +'&html='+ escape(div_html);
$.post("http://...", data, ...);
希望这能更好地帮助您。您应该使用
encodeURIComponent
,而不是escape
——就像原来的问题一样。如果您给数据
一个字符串,那么它需要格式化为查询字符串<代码>数据:obj可以改为使用,但不能使用数据:JSON.stringify(obj)
谢谢你指出David,看来我的想法不太正确。