Sayfa yükleme olmaksızın formu gönder

9 Cevap php

Bir seri ilanlar web sitesi var ve reklamlar gösterdi vardır sayfasında, ben bir "bir arkadaşa bir ipucu gönderin" şeklinde oluşturma ...

Yani isteyen herkes bazı arkadaşlar e-posta adresine reklamın bir ipucu gönderebilirsiniz.

Ben formu doğru bir php sayfasına teslim edilmelidir tahmin ediyorum?

<form name='tip' method='post' action='tip.php'>
Tip somebody: <input name="tip_email" type="text" size="30" onfocus="tip_div(1);" onblur="tip_div(2);"/>
 <input type="submit" value="Skicka Tips"/>
 <input type="hidden" name="ad_id" />
 </form>

Formu göndermek için, sayfa yeniden alır ... Ben bunu istemiyorum ...

Is there any way to make it not reload and still send the mail? Preferrably without ajax or jquery...

Teşekkürler

9 Cevap

Sen sayfayı yeniden olmadan e-posta göndermek için bir ajax isteği göndermeniz gerekir. http://api.jquery.com/jQuery.ajax/ bir göz atın

Sizin kod çizgisinde bir şey olmalı:

$('#submit').click(function()
{
    $.ajax({
        url: send_email.php,
        type:'POST',
        data:
        {
            email: email_address,
            message: message
        },
        success: function(msg)
        {
            alert('Email Sent');
        }               
    });
}

Form isteği işlemek ve e-posta göndermek gerekir send_email.php sayfasına arka planda sunacaktır.

Sen AJAX veya sizi kullanmak ya

  • oluşturmak ve belgeye bir iframe ekleme
  • 'foo' için iframe'ler adını ayarlamak
  • 'foo' için formlar hedef belirledi
  • sunmak
  • formlar eylem geribildirim vermek için 'parent.notify (...)' ile javascript hale gelmiş
  • isteğe bağlı olarak iframe kaldırabilirsiniz

Hey, bu jQuery ve AJAX olmadan çalışmak CAN ve basit bir iFrame kullanarak çok iyi çalışıyor tam olarak nasıl olduğunu. I LOVE IT, Opera10, FF3 ve IE6 çalışır. Teşekkürler bana doğru yönü işaret yukarıdaki posterleri bazı, ben burada ilanıyla tek nedeni var:

<select name="aAddToPage[65654]" 
onchange="
    if (bCanAddMore) {
        addToPage(65654,this);
    }
    else {
        alert('Could not add another, wait until previous is added.'); 
        this.options[0].selected = true;
    };
" />
<option value="">Add to page..</option>
[more options with values here]</select>

<script type="text/javascript">
function addToPage(iProduct, oSelect){
    iPage = oSelect.options[oSelect.selectedIndex].value;
    if (iPage != "") {
        bCanAddMore = false;
        window.hiddenFrame.document.formFrame.iProduct.value = iProduct;
        window.hiddenFrame.document.formFrame.iAddToPage.value = iPage;
        window.hiddenFrame.document.formFrame.submit();
    }
}
var bCanAddMore = true;</script> 

<iframe name="hiddenFrame" style="display:none;" src="admin.php?p=products-addProductToPage" onload="bCanAddMore = true;"></iframe>

Yukarıda çağrıldığını sayfasını oluşturuyor php kodu:

if( $a == 'addProductToPage' ){  // content for hidden iframe in products list
if(isset($_POST) && !empty($_POST['iAddToPage'])) {
    .. do something with it.. 
}
print('
    <html>
        <body>
            <form name="formFrame" id="formFrameId" style="display:none;" method="POST" action="admin.php?p=products-addProductToPage" >
                <input type="hidden" name="iProduct" value="" />
                <input type="hidden" name="iAddToPage" value="" />
            </form>
        </body>
    </html>
');
exit;

}

Sen gizli bir iframe için formun hedef özniteliği ayarlayarak deneyebilirsiniz, böylece form içeren sayfa tekrar almazsınız.

Ben (biz AJAX ile yapılabilir olamaz biliyorum ki) dosya yüklemeleri ile denedim, ve o güzel çalıştı.

Fastest and easiest way is to use an iframe. Put a frame at the bottom of your page.

<iframe name="frame"></iframe>

Ve formda bunu.

<form target="frame">
</form>

ve css çerçeve görünmez yapmak.

iframe{
   border: 0px;
}

Bir iframe (çirkin yaklaşımı) ile sonuçlanan olmadan JavaScript kullanmak gerekecektir.

JavaScript bunu yapabilir; jQuery kullanarak ağrısız yapacaktır.

Ben AJAX ve Gönderme kontrol öneririz.

Eğer javascript kullanmak istemiyorsanız sayfayı yeniden alacak

Eğer bir iFrame kullanarak denediniz mi? Hayır ajax ve orijinal sayfa yük olmayacak.

Sen iframe içinde ayrı bir sayfa olarak formu gönderdikten görüntüleyebilir ve teslim aldığında dış / konteyner sayfası yeniden olmayacaktır. Bu çözüm ajax her türlü kullanımı yapmaz.

Burada bir php sayfasına gönderme ve geri html almak için bazı jQuery:

$('form').submit(function() {
    $.post('tip.php', function(html) {
       // do what you need in your success callback
    }
    return false;
});