FF ancak IE javascript, çalışma kullanarak formu göndermek

3 Cevap php

Bu kodu vardır.

Aşağıdaki kod Firefox'ta çalışıyor ama IE'de değil

<?php // file: login_dfr.php ?>
<body>
<?php
$data = getLoginData($_SESSION['whoyouare']);
?>
    <form name="frm_redirect_dfr" action="<?php echo $data['url']; ?>" method="POST" id="frm_redirect_dfr" style="display: none;">
    <input name="DFRNet_User" value="<?php echo $data['username']; ?>" type="hidden" />
    <input name="DFRNet_Pass" value="<?php echo $data['password']; ?>" type="hidden" />
    <input name="tbllogin" value="login" type="hidden" />
    <input type="submit" value="submit" />
    </form>
    <script language="javascript" type="text/javascript">
    document.forms["frm_redirect_dfr"].submit();
    </script>
</body>

Kullanıcı erişim sayfasında, ilk şeklinde echo, giriş verileri almak için çalışacağız, ve javascript kullanarak otomatik formu göndermek ne yapmak istiyorum, bir

Update: I forget to mention that the code above is on a Frame, the mainFrame code is like below:

<?php session_start(); ?>
<?php // file: login_frame.php ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Wavinet</title>
</head>
<frameset rows="1,*" frameborder="no" border="0" framespacing="0">
<frame src="topFrame.php" name="topFrame" scrolling="No" noresize="noresize" id="topFrame" title="topFrame" />
<frame src="login_dfr.php" name="mainFrame" id="mainFrame" title="mainFrame" />
</frameset>
<noframes>
<body>This page contain frame</body>
</noframes>
</html>

3 Cevap

Muhtemelen bunu teslim yapmadan önce IE formu işlemek için zaman vermek gerekir. Yani bu

<script language="javascript" type="text/javascript">
setTimeout(function() {
    document.forms["frm_redirect_dfr"].submit();
    }, 0) /* You may need a higher number here. If you do, start with 100 and go up. */
</script>

Ayrıca belge hazır işleyicisi veya benzer bir şey onu asmak olabilir, ama ben (jQuery olsa, böyle bir kanca sağlar) bunu yapmak için ham JavaScript bilmiyorum.

Bu işleri nedeni 'verim' bir tür olmasıdır. Tarayıcılar inline JavaScript yürütme çok sayfa öğelerini paralayan düşük öncelik vermek eğilimindedir. Bu JavaScript işlemek için tarayıcı için beklemek için hiçbir belirgin yolu var gibi DOM ile etkileşim vardır inline bir sorun sunar. Bu hile tarayıcılarla daha JavaScript dolmadan bazı render halletmek için bir fırsat verir.

Bunu yanlış anlama ediyorum sürece kod gerçekten mantıklı değil. PHP için zaten mevcut bilgilerle tamamen bir form oluşturma ve geri PHP göndermeden ediyoruz. Hiçbir neden yok, sadece komut ne olursa olsun dosya $data['url'] noktalar şunlardır ve doğrudan o kullanıcı adı ve şifre verebilir

Yani oluşturulan html php değişkenlerin değerlerini kaçan sizin eksikliği tarafından karıştırılmış varsayarsak, iyi çalışması gerekir.

Senin sorunun mesajı aldığında sizin komut olabilir. Bir print_r ($ _POST) yapmak; Eğer hata ayıklama yardımcı olur.

Michael Mrozek Ama dediğin gibi, muhtemelen tüm bu yapmanız gerekmez.