这个问题与Jquery-Send only some value from a form密切相关。我有一个表格:
<form accept-charset="UTF-8" action="/filter" data-remote="true" method="get">
<div>
<div>
<h2 class="sort">Sort</h2>
<select class="checkable" id="sort" name="sort">
<option value='v'>Rank</option>
<option value='n'>Alphabetical</option>
</select>
</div>
<div>
<h2 class="tag">Categories</h2>
<ul>
<li>
<input name="category[a]" type="hidden" value="0" />
<input class="checkable" id="category_a" name="category[a]" type="checkbox" value="1" />
<span>a</span>
</li>
<li>
<input name="category[adfsadf fasdf]" type="hidden" value="0" />
<input class="checkable" id="category_adfsadf fasdf" name="category[adfsadf fasdf]" type="checkbox" value="1" />
<span>adfsadf fasdf</span>
</li>
<li>
<input name="category[another]" type="hidden" value="0" />
<input class="checkable" id="category_another" name="category[another]" type="checkbox" value="1" />
<span>another</span>
</li>
<li>
<input name="category[another tag]" type="hidden" value="0" />
<input class="checkable" id="category_another tag" name="category[another tag]" type="checkbox" value="1" />
<span>another tag</span>
</li>
</ul>
</div>
</form>
我只想通过 ajax 发送检查的类别。这是我目前必须从表单中发送所有内容:
$('.checkable').live('change',
function() {
$(this).parents('form:first').submit();
});
这很好用,但是当类别数量非常多时,请求会不必要地长。我不知道如何为此编写提交功能。或者也许另一种方法更好?提前致谢!
- - - 解决方案 - - -
改用ajax路由
$('.checkable').live('change',
function() {
var dataString = 'sort='+ $('#sort').val();
$('input[type=checkbox]').each(function () {
if($(this).is(":checked")) {
dataString += '&'+$(this).prop('name')+'=1';
}
});
alert
$.ajax({
type: "GET",
url: "/filter",
data: dataString,
success: function() {
}
});
});