2010-11-26 14 views
0

getメソッドを使用してフォーム入力(チェックボックス)から配列を渡しています。 と、AJAXで行う場合:getメソッドを使用してフォーム入力から配列を渡す

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' 
}); 

いくつかがチェックされたときに、変数キーは何のチェックボックスがチェックされていない「のサブカテゴリ」と「のサブカテゴリ[]」です。

これは、非Ajaxフォームを使用して送信し、いくつかのチェックボックスがオンになっている場合、変数キーは「カテゴリ」(末尾に[]がない)です。

javascriptが無効な場合、非Ajaxフォームをフォールバックとして使用したいので、いくつかのチェックボックスをオンにしたときに同じキーを使用したいと思います。

どのようにすればいいのですか?

おかげ

+0

この質問を見る "http://stackoverflow.com/questions/789755" –

答えて

0

これは、jQueryの1.4以降に作られた変化であったが、あなたはこのように、古い非[]シリアライズを取得するためにtraditional optionでそれを逆にすることができます:

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

あなたのとしてオブジェクトを渡すときに、最終的に呼ばれるもの(the $.param() docsでオプションの詳細を読むことができますプロパティ)....しかし基本的には、あなたが望むものを正確に行い、[]をオフにします。

0

はこれを試してみてください。

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' 
}); 
関連する問題