2012-06-14 7 views

Odpowiedz

0

Nie wierz, że istnieje wartość domyślna, musisz zakodować ciąg znaków w postaci one of these ways.

Choć można tworzyć własne wtyczki:

jQuery.fn.serializeAndEncode = function() { 
    return escape(this.serialize()); 
} 

$(myForm).serializeAndEncode(); 
+2

Proszę nie używać 'escape '. Został on [przestarzały od wielu lat] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Functions#escape_and_unescape_functions (Obsoleted_above_JavaScript_1.5) i powinien zostać zastąpiony przez 'encodeURIComponent' jak w Przykład Matta Roya – Husky

1

musiałem zrobić to samo. Rozwiązanie, które dał Terry z funkcją escape(), nie działa. The = i & zostają zakodowane (my tego nie chcemy), a + wciąż tam są.

Co zrobiłem tworzy własną funkcję do serializacji:

var QueryString = ""; 
$(selector).each(function(index) { 
    if(QueryString != "") QueryString += "&"; 
    QueryString += $(this).get(0).id + "=" + encodeURIComponent($(this).val()); 
}); 
3

Dla zabawy, oto alternatywę, która nie korzysta z tymczasowej zmiennej:

$.fn.serializeAndEncode = function() { 
    return $.map(this.serializeArray(), function(val) { 
     return [val.name, encodeURIComponent(val.value)].join('='); 
    }).join('&'); 
}; 

$("#formToSerialize").serializeAndEncode(); 
+0

To było dokładnie to, co robiłem sam. –