2011-03-02 93 views
0

我正在嘗試使用以下jQuery彈出式窗口進行跨域POST。 IE瀏覽器允許我拒絕jquery.min.js第19行的權限。請注意,我在www.mysite.com上運行以下腳本,並試圖將數據發佈到www.google.com。從而製作一個跨域的帖子。我認爲這就是IE爲什麼拒絕我的權限。我知道應該有一個解決方案來創建一個隱藏的iframe,但我不知道如何在我的代碼中實現這一點。一些例子將不勝感激。提前致謝!跨域jQuery彈出式POST

<html> 
<head> 
<link rel="stylesheet" href="https://ajax.googleapis.com/ajax/libs/jqueryui/1.7.2/themes/smoothness/jquery-ui.css" type="text/css" /> 
<style type="text/css"> 
#register { display: none; } 
.ui-dialog { font-size: 10px; } 
.ui-dialog .ui-dialog-titlebar-close { visibility: hidden; } 
</style> 
</head> 
<body> 
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script> 
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.7.1/jquery-ui.min.js"></script> 
<script type="text/javascript"> 

function loadpopup(){ 

function Init() 
{ 
jQuery('#register').dialog({ width: 400, resizable: false, buttons: { "Continue": function() { 
     if (jQuery("#email").val().length < 3) 
     { 
      alert('Please enter your email address to continue.'); 
      jQuery("#email").focus(); 
     } 
     else 
     { 
      jQuery("#email_2").val(jQuery("#email").val()); 
      $.post("http://google.com/register.php", $("form[name='registerform']").serialize()); 
      jQuery('#register').dialog('close')} 
    } 
}, closeOnEscape: false, modal: true, show: 'slide' }); 
} 
jQuery(document).ready(Init); 
} 

loadpopup(); 

</script> 
<div id="register"> 
<form> 
<center> 
<table><tbody> 
<tr><td align="center" style="text-align: center; font-size: 10px; background: #FFFFFF;"> 
<br><h3>Register</h3> 
    </td></tr> 
<tr><td align="left" style="text-align: justify; font-size: 11px; background: #FFFFFF;"> 
Please enter your email address to continue.</br></br> 
    </td></tr> 
</tbody></table></center> 
<center> 
<div> 
    <table> 
     <tbody> 
      <tr><td align="left" style="font-size: 12px; background: #FFFFFF;"><b>Email:</b></td><td align="left" style="background: #FFFFFF; font-size: 11px;"><input type="text" id="email" name="email" maxlength="26"/></td></tr> 
     </tbody> 
    </table> 
</div> 
</form> 
</center> 
</div> 
<form name="registerform" action="http://google.com/register.php" method="post"> 
<input type="hidden" name="email_2" id="email_2" /> 
</form> 
</body> 
</html> 

回答

1

您正在通過XHR發佈到其他域。你不能這樣做,因爲same origin policy

取而代之,建立表格,然後在其上調用submit()

您現在這樣做的方式是Google返回405 Method Not Allowed,這可能由於多種原因返回。

+0

我沒有發佈到谷歌。接收POST請求的域名在我的控制之下。我可以不讓我的服務器接受它嗎?我意識到我wouldnt能夠得到任何返回數據,但它只是需要POST和多數民衆贊成在它。我知道可以使用iframe繞過相同的原點策略,但我不知道如何去做這件事。 – Matti 2011-03-02 01:28:46

+1

@Matti'$ .post(「http://google.com/register.php」...'這說不然... – alex 2011-03-02 01:40:48

+0

這就是爲什麼我說,我引用「我試圖將數據發佈到www .google.com例如...「 – Matti 2011-03-02 01:42:52