jQuery通过ajax向Web服务发送POST请求

6
$(document).ready(function() {
        $.ajax({ type: "POST",
                        url: "/getprojects.ashx",
                        data: "<formData client=\"\" year=\"\" categories=\"\" tags=\"\" freeText=\"\" count=\"34\" page=\"1\"></formData>",
                        dataType: "text/xml",
                        cache: false,
                        error: function() { alert("No data found."); },
                        success: function(xml) {
                            alert("it works");
                            alert($(xml).find("project")[0].attr("id"));
                        }
        });
    });

我的问题是我获取了一些数据,但似乎无法将其显示出来。


这些数据看起来怎么样?你想提取其中的哪一部分?你想如何格式化和显示它,以及在哪里显示它? - Darin Dimitrov
我获得的数据看起来像这样: <content> <outcome success="1" requestId="" command="" /> <projects totalNumberOfProjects="226" selectedNofProjects="34" curPage="1" nOfPages="7"> <project id="378" title="Campaign" confidential="1" client="Client1" image="" thumb="" publicLink="" internalLink="" /> </projects> </content> 我想在所有项目中显示一些属性,用HTML格式。 - Jan Johansen
如果您使用交替的单引号/双引号,就不需要转义它们所有了 :( - Andrew
2个回答

10

dataType 应该是您接收到的数据类型,但 contentType 应该是您发送的 MIME 类型。以下代码应该是正确的:

$(document).ready(function() {
        $.ajax({ type: "POST",
                        url: "/getprojects.ashx",
                        data: "<formData client=\"\" year=\"\" categories=\"\" tags=\"\" freeText=\"\" count=\"34\" page=\"1\"></formData>",
                        contentType: "text/xml",
                        dataType: "xml",
                        cache: false,
                        error: function() { alert("No data found."); },
                        success: function(xml) {
                            alert("it works");
                            alert($(xml).find("project")[0].attr("id"));
                        }
        });
    });

错误回调函数的签名为 error(XMLHttpRequest, textStatus, errorThrown),这些参数的值是什么? - Claude Vedovini
[对象XMLHttpRequest解析错误TypeError:a为空]但我已经放弃并继续前进,但如果有关于如何使其工作的答案,仍然会感激不尽。 - Jan Johansen
现在的问题是数据是在发送还是接收时出了问题。您的服务器是否收到了请求,它的响应是什么? - Claude Vedovini
为此,您能否展示给我任何WebMethod的样例? - Karthikeyan P

2

你的dataType似乎是错误的。它应该看起来像:

dataType: "xml"

你的data结构看起来有些奇怪。可以看一下.serializeArray()。这应该是标准的查询字符串格式,如foo=bar&test=bla等。
如果success handler被执行,请尝试查找你的xml变量,不要使用.find()或其他操作。还是空的吗?

@Buckley:请再看一下我的帖子,你的“data”也是不正确的。如果它仍然执行错误处理程序,请通过传递“function(xhr, textStatus, error)”来查找错误代码/字符串。 - jAndy
谢谢jAndy,我在使用.serializeArray()时遇到了一些麻烦。 - Jan Johansen
我使用函数(xhr,textStatus,error)时出现了[object XMLHttpRequest parsererror TypeError:a为null]的错误。 - Jan Johansen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接