Forma jQuery.ajax veri Simültane gönderme gönderme

2 Cevap php

Ben bir muamma biraz var. Ben çok sayıda alanları içeren bir form var. Orada bir link bağlantıları için bir alan bir eklenti düğmesini tıklatın ve (jQuery kullanarak) bağlantı link_array eklendi alır. Ben form gönderildiğinde bu dizi jQuery.ajax yöntemi ile gönderilmesini istiyorum. . Ben $ kullanarak link_array gönderirseniz bu gibi ajax:

    $.ajax({
        type: "POST",
        url: "add_stock",
        dataType: "json",
        data: { "links": link_array }
        });

eklenti bağlantı düğmesi seçildiğinde veri doğru yere hiçbir sorun gider ve doğru db koymak alır. Ben $ (# stock_form) kullanarak formu göndermek düğmesini yukarıdaki işlevini bağlamak durumunda. Sonra ..... form verisinin kalanı link_array gönderilir değil, (gönderebilirsiniz.

Açıkçası HTML gizli bir alana geri bağlantı dizi geçirebilirsiniz ama sonra virgül ayrı değerleri içine dizi açmak ve PHP birbirinden virgülle ayrılmış dize kırmak olurdu. Bu sadece başka bir karışıklık olmadan PHP Javascript dizi paketten 100X daha kolay gibi görünüyor.

Peki, sen $ kullanarak javascript bir dizi gönderebilirsiniz olmasıdır. HTML $ _POST verilerin geri kalanı için ajax eşzamanlı?

Ben Kohana 3.0 framework kullanıyorum ama gerçekten bir fark yaratmak gerektiğini unutmayın, ne yapmak istiyorum, bu zaten oluyor $ _POST dizi dizi js ekleyin.

Teşekkürler!

2 Cevap

Aslında (sayfa yenileme ve bütün bu olan, örneğin) formu göndermek istiyorsanız, tek seçenek adı links ile form <input type='hidden'> alanları eklemek için bir dizi olduğunu ve diziden değerlerden biri ile her biri doldurun. Sonra ne diğer ucunda olsun size $.ajax Yukarıdaki çağrı ile almak aslında ne olacak.

Sadece sunucuya veri göndermek istiyor ama aslında formu göndermek için ihtiyacınız yoksa, kullanabilirsiniz serialize on the form to get a URL-encoded string for it, then append your links to the end of the string, and send that via ajax. Something Bunun gibi:

// Assuming 'link_array' is present
var data, n;

data = [$('#TheFormID').serialize()];
for (n = 0; n < link_array.length; ++n) {
    data.push("links=" + encodeURIComponent(link_array[n]));
}

$.ajax({
    type: "POST",
    url: "add_stock",
    dataType: "json",
    data: data.join("&")
});

Biz serialize, daha sonra her bağlantı için kodlanmış alanları itmek, onunla bir diziyi başlatmak gelen URL-kodlanmış dize başında olsun. Sonra Array#join ajax çağrısı ile göndermek için tek bir dize içine toplamak için kullanabilirsiniz. İsterseniz (yerine dize concat ile bu yapabileceğini, ancak bir dizi bu uzun dizeleri bina elemanları belli bir sayıdan sonra daha hızlı, yapar ve bütün "Ben ya da değil, bir & koymak "Sadece de doğal olarak dışarı düşer.)

Sen jQuery 'serializeArray or serialize fonksiyonunu , and then adding in the extra fields you have, and finally submit the POST data with .ajax kullanarak daha iyi bir şans olacaktır.