2012-06-14 8 views

risposta

0

Non credere che esista un valore predefinito, è necessario codificare la stringa in one of these ways.

Anche se si potrebbe creare il proprio plugin:

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

$(myForm).serializeAndEncode(); 
+2

prega di non utilizzare 'fuga '. È stato [deprecato per molti anni] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Functions#escape_and_unescape_functions (Obsoleted_above_JavaScript_1.5) e dovrebbe essere sostituito con 'encodeURIComponent' come in L'esempio di Matt Roy. – Husky

1

ho dovuto fare la stessa cosa. La soluzione che Terry ha dato, con escape(), non funziona. The = e & vengono codificati (non lo vogliamo) e i + sono ancora lì.

Quello che ho fatto è la creazione di mia propria funzione di serializzare:

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

Per divertimento, ecco un'alternativa che non fa uso di una variabile temporanea:

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

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

Questo era esattamente quello che stavo facendo da solo. –

Problemi correlati