2013-07-03 4 views
3

КЛИЕНТ - AJAXДистанционно Вызов WebService с помощью Ajax (ASP.NET)

$.ajax({ 
     type: "POST", 
     url: 'http://www.site.com/Service.asmx/Method', 
     data: "{ 'user': 'sampleuser', 'pass': '123456' }", 
     contentType: "application/json; charset=utf-8", 
     dataType: "json", 
     async: true, 
     success: function (result) { 
      alert("result: '" + result+ "'"); 
     }, 
     error: function (e) { 
      alert("error: '" + e + "'"); 
     } 
    }); 

SERVER - global.asax

protected void Application_BeginRequest(object sender, EventArgs e) 
{ 
    HttpContext.Current.Response.AddHeader("Access-Control-Allow-Origin", "*");  
    // HttpContext.Current.Response.AddHeader("Access-Control-Allow-Origin", "http://AllowedDomain.com"); 
} 

SERVER - Web.config

<httpProtocol> 
    <customHeaders> 
    <add name="Access-Control-Allow-Origin" value="*" /> 
    <add name="Access-Control-Allow-Headers" value="Content-Type, Authorization" /> 
    <add name="Access-Control-Allow-Methods" value="PUT, GET, POST, DELETE, OPTIONS" /> 
    </customHeaders> 
</httpProtocol> 

SERVER - УСЛУГА - C#

[WebMethod(EnableSession = true)] 
public string Method(string user, string pass) 
{ 
    // logic 
} 

Что происходит, что когда Ajax называется, он идет прямо к успеху обратного вызова с результатом = NULL. Эта ошибка появляется на отладчике:

XMLHttpRequest cannot load http://www.site.com/Service.asmx/Method. 
Origin http://localhost is not allowed by Access-Control-Allow-Origin. 
+0

Какую версию IIS вы используете? –

+0

Также вы можете уловить фактический запрос/ответ и проверить, что заголовки фактически добавляются? –

ответ

0

Пожалуйста, попробуйте изменить URL в происхождения в вызове Ajax.

Смежные вопросы