JQuery Ajax POST XML 结构 / 过滤器链

12

我想通过AJAX发布XML结构以获取过滤后的结果集。 Web服务能够处理POST请求,但我的POST似乎出现了问题。

$.ajax({
    url: ajaxurl,
    data: {
        inputxml: escape('<test></test>') <- how to post xml structure correctly?
    }, 
    type: 'POST',
    contentType: "text/xml",
    dataType: "text",
    success : parse,
    error : function (xhr, ajaxOptions, thrownError){  
        alert(xhr.status);          
        alert(thrownError);
    } 
}); 

XML:

<?xml version="1.0" encoding="UTF-8"?>
<f:filterChain
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:f="urn:foo">
    <f:filter attributeId="number">
        <f:rangeCondition conditionSign="INCLUSION" operator="BETWEEN">
            <f:low>5</f:low>
            <f:high>15</f:high>
        </f:rangeCondition>
    </f:filter>
</f:filterChain>
感谢。

你正在接收XML响应吗? - Rafay
是的,仍然出现HTTP 500错误,内部服务器错误,我会添加XML尝试发布..等待编辑。谢谢(现在:) - dotchuZ
1
你需要转义引号等字符,可以参考这个答案:https://dev59.com/H07Sa4cB1Zd3GeqP452m。同时,尝试发送一个简单的 XML,例如 "<test></test>",看看是否能够成功发布。 - Rafay
如果你的结果为空,那么意味着服务器没有发送正确的响应。请检查Firebug是否有任何响应,如果有,则需要发布您提供的parse函数的代码作为成功回调。 - Rafay
它正在工作:) 谢谢,你能编辑下面的评论并附上你发布的链接吗?这样我就可以接受它作为答案。谢谢! - dotchuZ
显示剩余2条评论
2个回答

36
$.ajax({
    url: ajaxurl,
    data: "<test></test>", 
    type: 'POST',
    contentType: "text/xml",
    dataType: "text",
    success : parse,
    error : function (xhr, ajaxOptions, thrownError){  
        console.log(xhr.status);          
        console.log(thrownError);
    } 
}); 

看看这个stackoverflow的回答,可能会有帮助。

jQuery ajax post到web服务


-1
也许最好将您的值设置在一个对象中,并通过将ajax方法的dataType设置为'xml',将该对象作为xml发送到服务器。

只需创建一个对象,将其作为数据发送,例如{ 'test' : 'test' }。 - Bas Slagter
如果将数据设置为XML格式,jQuery会自动将对象转换为XML吗? - Andrew

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