2010-11-26 6 views
0

Ich übergebe ein Array von Formulareingaben (Kontrollkästchen) mit der Get-Methode. Wenn in Ajax tun, mit:Übergeben von Array aus Formulareingaben mit Get-Methode

var subcat_checked = new Array(); 
$.each($("input[name='subcategories']:checked"), function() { 
    subcat_checked.push($(this).val()); 
}); 
$.ajax({ 
    type: 'GET', 
    url: '{% url view-category root_category.slug %}', 
    data: {subcat: subcat_checked}, 
    success: function(result) { 
     /* stuff */ 
    }, 
    dataType: 'json' 
}); 

der variable Schlüssel ‚Unterkategorien‘ ist, wenn kein Kontrollkästchen aktiviert ist, und ‚Unterkategorien []‘, wenn einige überprüft werden.

Nun, wenn Sie es mit einem Nicht-Ajax-Formular senden und einige Kontrollkästchen aktiviert sind, ist der variable Schlüssel 'Kategorien' (mit keinem [] am Ende).

Da ich das Nicht-Ajax-Formular als Fallback verwenden möchte, wenn JavaScript deaktiviert ist, möchte ich den gleichen Schlüssel haben, wenn einige Kontrollkästchen aktiviert sind.

Jeder weiß, wie ich das tun kann?

Dank

+0

schau dir diese Frage an "http://stackoverflow.com/questions/789755" –

Antwort

0

Dies war ein in jQuery vorgenommene Änderung 1.4+, aber man kann es umgekehrt mit dem traditional option die alte nicht [] Serialisierung zu bekommen, wie folgt aus:

$.ajax({ 
    traditional: true, 
    type: 'GET', 
    url: '{% url view-category root_category.slug %}', 
    data: {subcat: subcat_checked}, 
    success: function(result) { 
     /* stuff */ 
    }, 
    dataType: 'json' 
}); 

Sie können mehr über die Option in the $.param() docs lesen (was heißt letztlich, wenn ein Objekt alsvorbeiEigentum) .... aber im Grunde tut es genau das, was Sie wollen, lassen Sie die [] aus.

0

versuchen Sie dies:

var subcat_checked = $("input[name='subcategories']:checked").serializeArray(); 

$.ajax({ 
    type: 'GET', 
    url: '{% url view-category root_category.slug %}', 
    data: {subcat: subcat_checked}, 
    success: function(result) { 
     /* stuff */ 
    }, 
    dataType: 'json' 
}); 
Verwandte Themen