Ben bir AJAX yanıt almak için biliyorum:
$.post( '/action',
{ actiontodo: 'insert' }
function (data) { alert(data); } );
Action.php (sunucu tarafı) int:
<?php
if ($_POST['actiontodo'] == 'insert')
{
doInsertAction();
echo "inserted";
}
?>
Takılı: Nihayet bu kodun çıktısı kelime ile bir uyarı BOX.
ANCAK, ajax olmadan, ben (sunucu tarafında) bu çözmek için iki yol vardır:
ONE:
<?php
if ($_POST['actiontodo'] == 'insert') {
doInsertAction();
header( "Location: " . $_SERVER['HTTP_REFERER'] . " &response=inserted" );
} ?>
TWO:
<?php
session_start();
if ($_POST['actiontodo'] == 'insert') {
doInsertAction();
$_SESSION['response'] = 'inserted';
}
header( "Location: " . $_SERVER['HTTP_REFERER'] );
?>
Sayfasına dönmeden ben OTURUM veya GET cevap almak ve uyarısı gösterir.
Ben daha ONE çözüm gibi, ama her çözüm bir sorun var:
ONE problem:
Dönen URL: http://www.foo.com/myrefererurl&response=inserted
Formunu kullanarak olmadan türleri bu URL'yi varsa, uyarı kutusu sayfayı yenileyecek her zaman göreceksiniz. Soru: bir mesaj sadece bir zaman göstermek nasıl? (SADECE FORM EYLEM SONRASI)
TWO problem:
OTURUM artık eylemden sayfa döner Açıkçası çözüm belki gibi oturumun Bu değeri silmek ($ _SESSION ['tepki']) eklenen değere sahiptir: ($ _SESSION ['tepkisi'] tanımsız, ama herhalde UNSET $ _SESSION ['tepki'] hala teslim olmadan başka bir formda (varolduğundan diğer sayfada başka bir forma giderken herhangi bir nedenle (bağlantı hatası veya kullanıcı, vb tarafından durduruldu navigasyon), uzandı yok uyarı irade gösterdi ve) o tepki ile ilgisi yoktur. başka bir URL'ye eklenir inclusively İLE GET & yanıtı = sorun çok var olacaktır.
Ben bu soruları anlamak ve bir İYİ ŞEKİLDE çözüm getirmek umuyoruz. Temelde soru yanıtları bu kontrol nasıl ......