2016-08-01 61 views
0

我正在研究一个asp.net mvc 5,我想在其中使用web api,并且使用jquery库和下面的代码。但是我没有得到正确的答案。它总是返回失败,但我可以看到在browser.please输出帮我如何在asp.net中使用ajax调用webservices mvc 5

<!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> 

I can see the output in the browser

+0

您需要提供更多信息。你的AJAX调用看起来不错,在任何情况下,问题都不在于你如何使用它。您总是会遇到错误回调,因为服务器没有返回成功的HTTP代码。 没有关于实际错误的更多信息,我们无法做任何事情来帮助您。 –

+0

^^如上。您需要检查错误处理程序中的'y'和'z'的值(服务器返回的状态和错误消息)。 – Archer

回答

0

您将无法使一个AJAX调用这个URL,因为Same Origin Policy的(是的,你可以在浏览器中复制和粘贴网址并获得回复,但是您无法通过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(Cross Origin Resource Sharing)并允许网域的所有请求来访问他们的服务电话。

另外,您可以使用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(); 
} 
+0

尊敬的Denis.this代码不起作用。请检查它 – saba

+0

代码工作。在'string responseBody'中放置一个断点,您将看到它包含您正在查找的JSON数据。 –

+0

服务可能离线或暂时不可用。如果呼叫失败,您可以编写某种重试逻辑 –