2010-09-05 295 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

相關問題