如何对在线web服务进行Ajax调用
How to make an Ajax call to an online web service?
我想用jQuery Ajax调用一个在线web服务。但我无法得到一个成功的回应。我很困惑为什么它会给我一个错误。
var webMethod = "http://www.w3schools.com/webservices/tempconvert.asmx/CelsiusToFahrenheit?callback=?";
var soap ='<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Body> <CelsiusToFahrenheit xmlns="http://tempuri.org/"> <Celsius>12</Celsius> </CelsiusToFahrenheit> </soap:Body> </soap:Envelope>';
$j.ajax({
type: "POST",
url :webMethod,
data: soap,
dataType :"xml",
contentType:"text/xml; charset='"utf-8'"",
cache:false,
async: false,
error:function(resp)
{
alert("Error :"+$j.parseXML(resp));
},
}).done(function(response){
console.log(response);
var xmlData =$j(response).find('FahrenheitToCelsiusResult').text();
alert(xmlData);
});
});
由于某些原因,我不能去w3schools。
您正在尝试将响应解析为XML,但正在进行JSONP调用。如果您是从www.w3schools.com以外的任何网站发出请求,则由于同源策略,您有问题。
所以你可以从JavaScript消费这个web服务的唯一方法是,如果他们实现CORS头,你不使用ie9或更低(jQuery不实现CORS在他们的ajax请求ie9或更低)。
如果网站根本没有CORS标头,那么你可以安装forcecors插件。安装后选择视图=>工具栏=>插件栏,并在屏幕的右上角点击"cors"文本。现在你可以从任何地方到任何地方发出XHR请求,但因为你需要安装插件才能工作,所以它只适合测试和摆弄,因为你不能指望你的网站用户已经安装并激活了这个插件。
您还需要删除?callback=,否则jQuery将把您的请求视为JSONP,并将失败,因为它得到一个xml响应。
相关文章:
- 另一个ajax调用中的Jquery ajax调用在for循环中没有按预期工作
- Javascript/jQuery中的并行Ajax调用
- 任何方式使AJAX调用Gmail API,而无需通过JS库
- node.js请求数据事件未在CORS ajax调用中触发
- 如何从ajax调用返回.wrap()元素
- Ajax调用在Firefox中不会自动响应
- AJAX调用中的非法调用
- 使用AJAX调用将GeoJSON数据拉入传单
- 在MVC 4中,对Controller的Ajax调用为空
- Jquery:对返回JSON数据的php脚本的Ajax调用
- 在ajax调用中阻止来自JS对象的函数
- 如何在MVC5中ajax调用的部分视图中引用外部javascript
- 页面加载后的Ajax调用
- 如何使用Ajax调用特定的控制器和操作来重定向用户
- curl和fileget_contents在ajax调用后不起作用
- 在任何AJAX调用之前触发一个javascript函数
- 无法在mvc视图中使用ajax调用获取操作返回的模型对象列表
- Ajax调用ERror Cross Origin REquest:在rails中自动完成大学列表
- ASP.NET MVC 3-在ajax调用后,重定向到新页面或生成页面刷新
- 点击功能没有'ajax调用动态元素(Backbone)后无法工作