2016-04-11 25 views
0

我正在使用具有MVC框架4.5的Visual Studio版本2013。在使用ASP.NET MVC的ajax调用中的交叉起源

我使用AJAX像调用的ActionResult:

$.ajax({ 
       type: "POST", 
       url: $("#hdnSiteUrl").val() + 'Home/UserLogin', 
       data: JSON.stringify(dataJson), 
       contentType: "application/json; charset=utf-8", 
       datatype: "jsonp", 
       async: false, 
       success: function (msg) { 
        if (msg == 'false') { 
         $("#loginerror").show(); 
         $("#loginerror").text("UserName or Password is wrong."); 
        } 
        else { 
         //window.location.href = ($("#hdnSiteUrl").val()); 
         window.location.reload(); 
        } 
       }, 
       error: function (msg) { 
       } 
      }); 

我面对现在的问题是在一些电脑横出身,但在某些计算机正在运行的罚款。

我该如何解决这个问题?

请解决的人帮我解决这个问题!

我也尝试使用数据类型发送数据:jsonp在一些计算机上运行,​​但在某些计算机中仍然存在问题。

回答

0

JSONP代表“填充JSON”,它是一种用于加载来自不同域的数据的解决方法。它将脚本加载到DOM的头部,因此您可以像访问您自己的域时那样访问这些信息,从而绕过跨域问题。

并且使用的是自己的MVC项目URL url: $("#hdnSiteUrl").val() + 'Home/UserLogin',

尝试改变数据类型: 'JSONP' 到

dataType: 'json', 

更多澄清:

(function($) { 
var url = 'http://www.jquery4u.com/scripts/jquery4u-sites.json?callback=?'; 

$.ajax({ 
type: 'GET', 
url: url, 
async: false, 
jsonpCallback: 'jsonCallback', 
contentType: "application/json", 
dataType: 'jsonp', 
success: function(json) { 
    console.dir(json.sites); 
}, 
error: function(e) { 
    console.log(e.message); 
} 
}); 

})(jQuery); 

您也可以alow跨域允许来自不同域的呼叫数据以下代码需要在您的web.config文件中

<system.webServer> 
<httpProtocol> 
<customHeaders> 
    <add name="Access-Control-Allow-Origin" value="http://localhost" /> 
    <add name="Access-Control-Allow-Headers" value="X-AspNet-Version,X-Powered-By,Date,Server,Accept,Accept-Encoding,Accept-Language,Cache-Control,Connection,Content-Length,Content-Type,Host,Origin,Pragma,Referer,User-Agent" /> 
    <add name="Access-Control-Allow-Methods" value="GET, PUT, POST, DELETE, OPTIONS" /> 
    <add name="Access-Control-Max-Age" value="1000" /> 
</customHeaders> 

+0

我已经说过,我已经使用JSONP,但仍然面临着同样的问题。并且您要修改的配置文件正在创建类型400的错误,所以我现在可以做什么!提前致谢。 –

+0

确定尝试使用“crossOrigin:true”选中此[Url-link](http://www.ajax-cross-origin.com) –

相关问题