通过jQuery AJAX传递XML的不同方法

时间:2011-03-03 04:09:21

标签: jquery xml ajax

我遇到了获取返回值的问题(content-type:“text / xml”)。通过直接访问此URL,我可以获得返回值:

https://[domain_name]/myfolder/myapi/?xml=<xml version='1.0'><MyTasks><Search></Search></MyTasks>

如果错误(请在MyFolder中的HTML中调用),请帮我纠正这些替代方案,因为它始终提醒“失败”。

$.ajax({
    type     : "GET",
    url      : "interface/?xml=<xml version='1.0'><MyTasks><Search></Search></MyTasks>",
    dataType : "text/xml",
    success  : function(msg){
        alert('Success');
    }
    error    : function(msg) {
        alert('Failed');
    }
});

...或

$.ajax({
    type     : "POST",
    url      : "interface/",
    data     : { xml: escape("<MyTasks><Search></Search></MyTasks>") },
    dataType : "text/xml",
    success  : function(msg){
        alert('Success');
    }
    error    : function(msg) {
        alert('Failed');
    }
});

谢谢。

接口必须由https访问,因此我将url param更改为绝对URL。我还必须使用"xml"而不是"text/xml"作为其dataType。结果成功,谢谢。

3 个答案:

答案 0 :(得分:5)

这会接受POST吗...从你的例子看,它看起来像是GET的设置.. 试试这个:

$.ajax({     
   type     : "GET",
   url      : "http://blachblahblah.com/abc.html",
   dataType : "text/xml",
   data     : { xml : escape("<xml version='1.0'><MyTasks><Search></Search></MyTasks>") },
   success  : function(msg){ alert('Success'); } ,
   error    : function(msg) { alert('Failed'); } 
}); 

答案 1 :(得分:3)

为了简化,我会做以下

假设您使用的是名为script.php的PHP脚本。

var xml_string = "<xml version='1.0'><MyTasks><Search></Search></MyTasks>";

$.get('script.php', {xml: xml_string}, function(){ //your success function
  alert('success');
}).error(function(){ //your error function
  alert("error");
});

答案 2 :(得分:1)

我不明白为什么要使用dataType?

您想要/需要的是contentType。

来自api.jquery.com:

dataType(默认值:Intelligent Guess(xml,json,script或html)) 类型:字符串 您期望从服务器返回的数据类型。如果没有指定,jQuery将尝试根据响应的MIME类型推断它.........

contentType(默认值:'application / x-www-form-urlencoded; charset = UTF-8') 类型:字符串 将数据发送到服务器时,请使用此内容类型。默认为“application / x-www-form-urlencoded; charset = UTF-8”,这在大多数情况下都适用。如果您明确地将内容类型传递给$ .ajax().............

希望这可以提供帮助