【问题标题】:Inserting an IFrame in a DIV with an Ajax response使用 Ajax 响应在 DIV 中插入 IFrame
【发布时间】:2011-01-16 15:05:51
【问题描述】:

我有一个网站,我需要我的用户能够付款,并且该网络有自己的页面,该页面分为 3 个部分。第一个用于选择支付方式(Visa、万事达卡等),第二个是一个输入框,用户在其中输入要转账的金额和一个继续加载 Moneybookers 支付网关的按钮。好吧,在第三部分有一个空的 DIV 等待加载,直到用户单击事务按钮。所以,一旦完成,我通过 AJAX 调用 PHP。 AJAX函数的代码是下一段:

    var xml = null;
     try{
         xml = new ActiveXObject("Microsoft.XMLHTTP");
     }catch(expeption){
         xml = new XMLHttpRequest();
     }xml.open("POST", "mb_connect.php", false);
  xml.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
  xml.send("pay_to_email="+datos[3]+"&transaction_id="+datos[1]+
      "&status_url="+datos[2]+
      "&language="+lang+
      "&pay_from_email="+datos[13]+
      "&firstname="+datos[5]+
      "&lastname="+datos[6]+
      "&address="+datos[7]+
      "&postal_code="+datos[8]+
      "&city="+datos[9]+
      "&state="+datos[10]+
      "&country="+datos[11]+
      "&date_of_birth="+datos[12]+
      "&amount="+document.payment.cantidad.value+
      "&payment_methods="+datos[4]);

  $("#contenido").html(xml.responseText);

调用的 PHP 就是这个:

    <?php header('Content-type: text/html; Charset=utf-8');

extract($_POST);
$status_url2  = 'mailto:payments@misite.com';
$return_url_target = 3;
$return_url   = 'https://www.misite.com';
$cancel_url   = 'https://www.misite.com';

?>


<iframe id="myiframe" name="myiframe" frameborder="no" style="height: 600px; width:735px;" scrolling = "auto">
</iframe>
<form name="oc" action="https://www.moneybookers.com/app/payment.pl" method="post" target="myiframe">

 <input type="hidden" name="pay_to_email"     value="<?= $pay_to_email ?>">
 <input type="hidden" name="recipient_description"   value="My SITE ltd">
 <input type="hidden" name="transaction_id"     value="<?= $transaction_id ?>">     
 <input type="hidden" name="status_url"      value="<?= $status_url ?>">
 <input type="hidden" name="status_url2"     value="<?= $status_url2 ?>">
 <input type="hidden" name="return_url_target"    value="<?= $return_url_target ?>">
 <input type="hidden" name="return_url"      value="<?= $return_url ?>">
 <input type="hidden" name="cancel_url"      value="<?= $cancel_url ?>">
 <input type="hidden" name="return_url_target"    value="1">
 <input type="hidden" name="cancel_url_target"    value="1">
 <input type="hidden" name="language"      value="<?= $language ?>">
 <input type="hidden" name="confirmation_note"    value="">
 <input type="hidden" name="pay_from_email"     value="<?= $pay_from_email ?>">
 <input type="hidden" name="title"       value="">
 <input type="hidden" name="firstname"      value="<?= $firstname ?>">
 <input type="hidden" name="lastname"      value="<?= $lastname ?>">
 <input type="hidden" name="address"      value="<?= $address ?>">
 <input type="hidden" name="postal_code"     value="<?= $postal_code ?>">
 <input type="hidden" name="city"       value="<?= $city ?>">
 <input type="hidden" name="state"       value="<?= $state ?>">
 <input type="hidden" name="country"      value="<?= $country ?>">
 <input type="hidden" name="date_of_birth"     value="<?= $date_of_birth ?>">
 <input type="hidden" name="amount"       value="<?= $amount ?>">
 <input type="hidden" name="currency"      value="EUR">
 <input type="hidden" name="rec_cycle"      value="day">
 <input type="hidden" name="payment_methods"    value="<?= $payment_methods ?>">
 <input type="hidden" name="submit_id"      value="Submit">

</form>
<script language="JavaScript">document.oc.submit();</script>

因此,该脚本在执行时会自动调用 Moneybookers 支付网关并返回插入到 IFRAME 中的 HTML 代码。

嗯,所有这些过程都可以在除 Internet Explorer 之外的所有浏览器中正常运行。没有错误,DIV为空。

有谁知道可能是什么错误?

我将不胜感激。

谢谢。

【问题讨论】:

    标签: javascript ajax internet-explorer-8


    【解决方案1】:

    除非您的原始页面与moneybookers.com 加载在同一个域中,否则 IE 会将此视为安全违规。也许在加载 iFrame 时更改 document.domain 可能会缓解您的问题。

    这里有一篇关于cross-domain communication with iFrames 的好文章供进一步阅读。

    祝你好运。

    【讨论】:

      【解决方案2】:

      我曾经遇到过这个问题。事实证明,因为 ajax 请求的页面在另一个域上,所以 POST 请求变成了 OPTION 请求,把事情搞砸了。 (只需检查网络表。)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-05-19
        • 2019-02-08
        • 1970-01-01
        • 2019-07-04
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多