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

  • dirkgently1

    dirkgently1

    13 NİSAN 2006
  • EvilControllers

    EvilControll

    20 Ocak 2008
  • ThePointblank

    ThePointblan

    18 Aralık 2006