JQuery tüm giriş değerlerini almak ve (adları) ile bir dizi oluşturmak

5 Cevap php

Hay adamlar, ben formları geniş bir koleksiyon var bazı işler yapıyorum. Bu (yani Gönder düğmesini kullanarak) geleneksel şekilde 'haberi' değil gibi görünüyor. Ben bir bağlantı (document.location sonra yönlendirmeler için kullanılır) tıkladığınızda tüm form verileri tüm adları ve değerleri toplamak için bir yol gerekir.

Ben verilerle çalışmak için basit bir PHP komut dosyası kullanılabilir böylece isimler bozulmadan kalmak istiyorum.

herhangi bir öneriniz?

5 Cevap

Ben önerebiliriz Serialize Form to JSON:

$.fn.serializeObject = function()
{
   var o = {};
   var a = this.serializeArray();
   $.each(a, function() {
       if (o[this.name]) {
           if (!o[this.name].push) {
               o[this.name] = [o[this.name]];
           }
           o[this.name].push(this.value || '');
       } else {
           o[this.name] = this.value || '';
       }
   });
   return o;
};

ve sonra bunu yapabilirsiniz:

var formArray = $("#myform").serializeObject();
$.fn.valuesArr = function()
{
    var a = [];
    jQuery.each(this, function(i, field){
        a.push($.trim(field.value));
    });
    return a;
}

KULLANIM:

var myArr = $('input', $parentJQelem).valuesArr();

Sen bir üs olarak benim teslim yardımcısı gibi bir şey kullanabilirsiniz

function submit(form) {
  var form = $(form);
  $.ajax(
    { data: $.param( form.serializeArray()),
      dataType:'script',
      type:'post',
      url: form.attr("action")});
}

yerine 'serializeArray ()' i ') (serialize' kullanmak yerine ajax kullanarak gönderme sen istersen yapabilirsin.

Üzgünüz, şu anda daha fazla vaktim yok, ama umarım bu pasajı size yardımcı olur.

cletus 'cevabı verime açısından en iyi biridir.

Bu JSON güvenmez, ancak başka bir çalışma çözümdür:

//this is my object I will fill my array with
function myObject(name, value)
{
    this.name = name;
    this.value = value;
}

var arr = $.map(
    $('span'), function (item) {
       var $item = $(item); //no need to $(item) 2 times
       return new 
         myObject(
           $item.attr("name"),     //name field
           $item.text()            //value field
         );
    }
);

arr myObject bir dizi, her biri bir name özelliği içeren ve bir value özelliği olacaktır.

Yerine sizin seçiciyi kullanın $('span').

ama tüm bu işlevleri girişler cadı dizi isimlerini dont iş.

Örnek -

Bu Mesaja formu göndermek için doğru ama ne zaman serialize i olsun

Form [tipi []]: 2

Bu doğru değil - i need - formu [tip] []: 2