2011-03-02 89 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