0

这可以用于 xml 解析,因为我已经使用 json 解析,但它没有显示来自 Web 服务的任何响应。 这是 webservice http/1.1 的状态 405 方法不允许 113ms

 $j.ajax({
   type: "GET",
   async: false,
   url: "Service1.asmx",
   dataType: 'XML',
   //contentType:'application/json',
   success: function (data) {
     $j.each(data, function (index, element) {
         alert("Successful here: " + element);
         //$j('#json').append("<li'>"+element+"</li>");
     });
   }
}).done(function (data) {
 console.log(data);
 alert("XML Data: " + data);
});
4

1 回答 1

0

在 ajax 的参数中使用您的方法名称,url例如:url: "Service.asmx/ConversionRate"

如果您正在调用不同域中的 Web 服务 例如:您正在编写 ajax 函数的 .js 文件在其中,并且您正在(即)跨域调用www.abc.com中调用 Web 服务,那么您需要使用服务器路由www.xyz.com如下所示的代理或使用 jsonp 作为浏览器不允许的跨域调用。

var url = 'http://www.webservicex.net/Service1.asmx/ConversionRate;
var yql = 'http://query.yahooapis.com/v1/public/yql?q=' + encodeURIComponent('select * from xml where url="' + url + '"') + '&format=json&callback=?'; 

 $j.ajax({
   type: "GET",
   async: false,
   url: yql,
   dataType: 'XML',
   //contentType:'application/json',
   success: function (data) {     
     if(data.query.results){
        var result = data.query.results.double.content.replace(/<script[^>]*>[\s\S]*?<\/script>/gi, '');
        $j.each(result, function (index, element) {
         alert("Successful here: " + element);
         //$j('#json').append("<li'>"+element+"</li>");
     });
    }
   }
});

使用其中之一successdone功能,因为它们都具有相同的目的。

如果您使用来自同一域的服务,则不需要上述服务器路由代理。然后代码如下。

 $j.ajax({
   type: "GET",
   async: false,
   url: "Service1.asmx/GetConversion",
   dataType: 'XML',
   //contentType:'application/json',
   success: function (data) {          
        $j.each(data, function (index, element) {
         alert("Successful here: " + element);
         //$j('#json').append("<li'>"+element+"</li>");
     });
    }
});
于 2013-05-30T07:51:27.280 回答