SORU
5 EYLÜL 2008, Cuma


Yanıt.YAZI ile yönlendirme yerine?

Biz gereksinimi için bir form gönderme ve bazı verileri kaydetmek, daha sonra yeniden yönlendirme kullanıcı için bir sayfa dışına, ama yönlendirme, ihtiyacımız için "Gönder" formu ile YAZI değil.

Bunu yapmanın kolay bir yolu olduğunu umuyordum, ama olmadığını düşünmeye başladım. Şimdi basit başka bir sayfa, istediğim sadece form oluşturmak, yönlendirmek, form değişkenleri doldurmak, bir vücut yapmak zorundayım sanırım.yüklendiğinde sadece belge çağıran bir komut dosyası için arama.forms[0].() gönder;

Eğer bir alternatif varsa söyleyebilir mi? Bu proje daha sonra çimdik gerekebilir, ve eğer olmayan diğer sayfaya bağımlı bu harika olurdu tüm bu yapabileceğimiz kolay olsaydı orada çok çeşit karmaşık olabilir.

Her neyse, herhangi bir ve tüm yanıtlar için teşekkürler.

CEVAP
6 EYLÜL 2008, CUMARTESİ


Bu işin HTTP yönlendirmeleri nasıl çalıştığını anlamak gerekir. Response.Redirect(), kullandığınızda yanıt (istekte tarayıcı) bundan sonra Nereye tarayıcı söyler HTTP Status Code 302 ile göndermek. Tanım olarak, tarayıcı özgün isteği POST olsa bile GET isteği ile yapacak.

Başka bir seçenek tarayıcı aynı şekilde yönlendirmek isteği özgün istek, fakat kullanıcıdan bir güvenlik uyarısı olarak yapmak gerektiğini belirten HTTP Status Code 307 kullanmaktır. Bunu yapmak için, böyle bir şey yazabilirsiniz:

public void PageLoad(object sender, EventArgs e)
{
    // Process the post on your side   

    Response.Status = "307 Temporary Redirect";
    Response.AddHeader("Location", "http://example.com/page/to/post.to");
}

Ne yazık ki, bu her zaman işe yaramaz. Ortak durum kodu olmadığı için Different browsers implement this differently,.

Ne yazık ki, aksine Opera ve FireFox geliştiricileri, YANİ geliştiriciler asla okuma spec, ve hatta en son, en güvenli IE 7 daha sonradan POST isteğini Bir etki alanı için etki alanı B olmadan herhangi bir uyarı veya onay diyaloglar! Safari de bir onay iletişim zam yok ve yönlendirmek, uzağa POST verilerini atar yaparken ilginç bir şekilde davranıretkili 307 değiştirme daha yaygın 302 içine yönlendirmek.

Yani, bildiğim kadarıyla, böyle bir şey uygulamak için tek yol Javascript kullanmak olacaktır. Aklıma iki seçenek benim biraz kafam karisti

  1. Form oluşturmak ve action üçüncü taraf sunucu işaret özniteliği var. Sonra, ilk verileri ile sunucuya bir AJAX isteği yürüten düğme göndermek için TIKLAYIN bir olay ekleyin ve sonra formu üçüncü taraf sunucuya gönderilmesini sağlar.
  2. Bu form sunucuya göndermek için oluşturun. Form gönderildiğinde, kullanıcı, gizli girişler aktarmak istediğiniz tüm verileri içeren bir form olan bir sayfa göster. Gibi bir ileti göster "..." Çeviriyoruz. Sonra, üçüncü taraf sunucuya formu Gönderen sayfaya javascript bir olay Ekle.

İki, ikinci, iki nedenden dolayı tercih ederim. İlk olarak, daha güvenilir, daha ilk Javascript gerekmediği için, için sevmeyenler var onu etkin, sen-ebilmek her zaman yapmak gönder düğmesi için gizli bir form görünür, ve söyleyin onlara basın sürse en fazla 5 saniye. İkinci olarak, karar ne veri alıyor iletilen üçüncü taraf sunucu; kullanırsanız sadece işlem formu olarak geçiyor, sen boyunca geçen tüm post veri, hangi değil her zaman ne istiyorsun. 307 çözümü için aynı, tüm kullanıcılar için bu sorun çıkmasaydı.

Bu yardımcı olur umarım!

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • CrazyMan

    CrazyMan

    14 Mayıs 2008
  • hidetake takayama

    hidetake tak

    3 Mart 2009
  • Joshua Benedict

    Joshua Bened

    26 EKİM 2013