2011-03-02 2 views
0

다음 jQuery 팝업을 사용하여 크로스 도메인 POST를 만들려고합니다. IE는 jquery.min.js의 Line 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

나는 Google에 글을 게시하고 있지 않다. POST 요청을받는 도메인이 내 통제하에 있습니다. 내 서버에서 동의하도록 할 수 있습니까? 내가 반환 데이터를 얻을 수 없을 것이라고 생각하지만 그것은 단지 POST와 그것을해야합니다. iframe을 사용하여 동일한 원산지 정책을 우회하는 것이 가능하다는 것을 알고 있지만이를 수행하는 방법을 알지 못합니다. – Matti

+1

@Matti'$ .post ("http://google.com/register.php"... "그렇지 않다면 ... – alex

+0

그래서 내가 말했고"나는 www로 데이터를 게시하려고합니다. .google.com 예를 들어 ... " – Matti