SORU
25 EYLÜL 2008, PERŞEMBE


JavaScript sonrası talep formu gibi gönder

Başka bir sayfaya bir tarayıcı yönlendirmek için çalışıyorum. Eğer bir istek ALMAK istersem, diyebilirim

document.location.href = 'http://example.com/?q=a';

Ama ulaşmaya çalıştığım kaynağın bir POST isteği kullandığım sürece düzgün cevap vermiyor. Eğer bu dinamik olarak oluşturulmuş olsaydı, HTML kullanabilirim

<form action="http://example.com/" method="POST">
  <input type="hidden" name="q" value="a">
</form>

O zaman sadece DOM formu göndermek istiyorum.

Ama gerçekten söylememi sağlayan JavaScript kodu istiyorum

post_to_url('http://example.com/', {'q':'a'});

En iyi tarayıcı uygulaması çapraz nedir?

Edit

Ben net değildi özür dilerim. Tarayıcı konumu, tıpkı bir form göndererek değiştiren bir çözüme ihtiyacım var. Eğer bu XMLHttpRequest ile mümkün ise belirgin değildir. Ve bu zaman uyumsuz olmamalı, ne de XML kullanımı, Ajax çözüm değil.

CEVAP
25 EYLÜL 2008, PERŞEMBE


function post(path, params, method) {
    method = method || "post"; // Set method to post by default if not specified.

    // The rest of this code assumes you are not using a library.
    // It can be made less wordy if you use one.
    var form = document.createElement("form");
    form.setAttribute("method", method);
    form.setAttribute("action", path);

    for(var key in params) {
        if(params.hasOwnProperty(key)) {
            var hiddenField = document.createElement("input");
            hiddenField.setAttribute("type", "hidden");
            hiddenField.setAttribute("name", key);
            hiddenField.setAttribute("value", params[key]);

            form.appendChild(hiddenField);
         }
    }

    document.body.appendChild(form);
    form.submit();
}

Örnek:

post('/contact/', {name: 'Johnny Bravo'});

EDİTBu çok upvoted kaçtığından beri, insanlar kopyala-yapıştır bu çok olacağını tahmin ediyorum. Herhangi bir istenmeyen hataları düzeltmek için hasOwnProperty kontrol ekledim.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Doug Bernards

    Doug Bernard

    7 Kasım 2007
  • grickle

    grickle

    22 AĞUSTOS 2006
  • tutvid

    tutvid

    19 AĞUSTOS 2006