jQuery AJAX使用特殊字符调用未定义的错误

时间:2009-09-21 08:34:00

标签: jquery ajax character

我尝试使用jQuery进行AJAX调用,数据有特殊字符,例如{'data':'<p>test</p>'}。它似乎首先未能传递这些数据。如果我只是通过{'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)
            {   

            }               
}); 

此致

大卫

4 个答案:

答案 0 :(得分:3)

我在firebug中给了这个快速测试,它实际上工作得很好,数据被发送和所有内容,所以听起来你的问题与ajax调用本身无关,而是与你发布的函数有关。

答案 1 :(得分:1)

这类问题有时候很难调试,因为很多组件都会触及你的数据,每个组件都需要自己的引用或转义方式,以确保你的数据按照你的预期通过。

要做的第一件事是确保数据正确地进入ajax功能。就在ajax函数之前,使用console.logalert()来查看数据的外观。根据数据的来源,此时甚至可能不正确。

您可以使用Firebug的Net面板查看实际向服务器发出的请求,以查看离开浏览器的数据。如果您有权访问服务器,则可以在ajax函数处理程序中进行调试,以查看它收到的数据。

基本上,你必须从数据开始的地方走到整个路径,到数据出错的地方,并找到错误转向的点。

答案 2 :(得分:-1)

假设obj中的encodeURIComponent(JSON.stringify(obj))是一个字符串或一个json对象,那么你的脚本应该可以工作。

如果obj = {'data':'<p>test</p>'};那么您不需要encodeURIComponent就可以data: JSON.stringify(obj)

代码还有什么,如果你可以发布它可能会有更多帮助。

答案 3 :(得分:-2)

我不是一个asp开发人员,但是我通过jquery ajax处理html帖子时遇到了同样的问题我曾经这样发帖:

var data = 'id='+ escape(currid) +'&html='+ escape(div_html);

$.post("http://...", data, ...);

希望这会对你有所帮助。