[英]how to call webservices using ajax in asp.net mvc 5
我正在asp.net mvc 5上工作,我想在其中使用Web api,并且使用jquery库和下面的代码。但是我没有得到正确的答案。它总是失败,但是我可以在浏览器中看到输出。请帮我
<!DOCTYPE html>
<html>
<head>
<title></title>
<meta charset="utf-8" />
<script src="js/jquery-1.12.4.js"></script>
<script>
function ftoken() {
$.ajax({
url: 'http://charter724.ir/webservice/get_city_a.php?id=367&key=EmlyCD8JOWX22cL8IuNBju5K5',
// data: { },
type: 'GET',
dataType: 'json',
success: function (data) {
alert('success')
// alert(data.data)
//if (country_id != "" && zone_code != "" && duration != "" && birthday != "") {
// fPrice(data.token);
//}
//$.each(data, function (idx, result) {
// alert(result.data);
//})
},
error: function (x, y, z) {
alert('fail')
//alert(x.responseText);
//alert(z);
}
});
}
</script>
</head>
<body>
<input type="submit" name="name" onclick="ftoken();" value="Click " />
</body>
</html>
由于具有相同的来源政策,您将无法对此URL进行AJAX调用(是的,您可以将URL复制并粘贴到浏览器中并获得响应,但不能从javascript访问它)。
相同来源策略指出,仅当AJAX调用来自同一域时,才允许这样做,您正在执行以下操作:
从http://localhost...
到http://charter724...
进行AJAX调用- 不允许这样做
如果检查浏览器控制台,将看到与以下错误类似的错误:
XMLHttpRequest无法加载http://charter724.ir/webservice/get_city_a.php?id=367&key=EmlyCD8JOWX22cL8IuNBju5K5 。 所请求的资源上没有“ Access-Control-Allow-Origin”标头。 因此,不允许访问源' http:// localhost:10585 '
解决此问题的唯一方法是让您联系提供charter724
服务的公司,并要求他们启用CORS(跨源资源共享),并允许来自您域的所有请求访问其服务呼叫。
另外,您可以使用访问服务调用HttpClient
,并得到了JSON response.If你真的想你甚至可能暴露你自己的一套跟外部服务和访问来自Java脚本您的服务电话的服务:
public async System.Threading.Tasks.Task<ActionResult> Index()
{
string url = "http://charter724.ir/webservice/get_city_a.php?id=367&key=EmlyCD8JOWX22cL8IuNBju5K5";
System.Net.Http.HttpClient client = new System.Net.Http.HttpClient();
System.Net.Http.HttpResponseMessage response = await client.GetAsync(url);
response.EnsureSuccessStatusCode();
string responseBody = await response.Content.ReadAsStringAsync();
return View();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.