2010-09-05 298 views
1

以下JQuery请求在IE中正常工作,但在FF和Chrome中不起作用。

我正在从其文件位置运行以下页面,例如file:/// C:/Test/json.htm并请求在本地主机上运行的页面。

这是什么原因?

我如何才能使它适用于FF和Chrome?

<body> 
<input type="button" value="Search" id="search-button" /> 
<script language="javascript" type="text/javascript" src="http://code.jquery.com/jquery-latest.js"></script> 

<script type="text/javascript"> 

$(函数(){

$('#search-button').click(function() { 

    var parms = { 
      id: 27 
     }; 

     $.ajax({ 
      type: 'POST', 
      url: 'http://localhost:51621/Test/GetJSONMessage/', 
      async: false, 
      data: parms, 
      dataType: 'json', 
      success: function(data, testStatus) { 
       alert(data.message); 
     } 
    }); 

    }); 

}); 
</script> 
</body> 

凡GetJSONMessage由一个ASP.Net MVC JSonResult提供:

[HttpPost] 
public JsonResult GetJSONMessage(int id) 
{ 
    return Json(new { message = ("hello world " + id.ToString()) }); 
} 

回答

3

因为你从文件系统托管,并制作一个请求localhost,Chrome和FF会将此视为跨域请求,因此存在安全问题。

如果您直接在地址栏中输入网址,您可能会收到您的回复。

当您从文件系统托管时,Safari对于这些“安全问题”更容易一些。

+0

@patrick - 好吧,它是一个跨域问题 - 那么我该如何处理?其他网站如何提供/使用来自其他域的json数据? – 2010-09-05 22:40:35

+0

@Nicholas - 如果在您的实际网站中,请求将被提交给同一个域名,这不是问题。否则,您可以尝试将数据类型设置为'jsonp',这是允许跨域json请求的一种方式。但是,不完全确定需要使用'jsonp'进行哪些调整。 – user113716 2010-09-05 22:46:46

+0

@patrick - 会改变请求和JsonResult GET来解决这个问题,是更好的做法? – 2010-09-05 23:06:33

相关问题