更改JQuery发出ajax请求

时间:2016-09-15 18:18:55

标签: javascript jquery ajax

我有很多选择作为这样的过滤器

<select name="color" data-options="katalog.php?cat=3" class="filter">
    <option value="1">White</option>
    <option value="2">Green</option>
</select>

但在Firebug中我收到错误,无法弄清楚原因

$('body').on("change", '.filter', function() {

    $('#mainstage').load($(this).data('options') + '&' + $(this).attr('name') + '=' + $(this).attr('value'));
})

2 个答案:

答案 0 :(得分:2)

您请求的网址为"katalog.php?cat=3&color=undefined",因为您不应使用attr()来读取该值。使用jQuery的val()方法,以便获得所选选项的值。

... '=' + $(this).val())

答案 1 :(得分:1)

错误发生在$(this).attr('value'),它试图获取select元素本身的value属性,而不是获取选定值。只需找到所选的文字或值。

示例:

通过$(this).find(":selected").text()

查找所选选项的文本值
$('body').on("change", 'select', function() {

     $('#mainstage').load($(this).data('options') + '&' + $(this).attr('name') + '=' + $(this).find(":selected").text());

})

示例:

通过$(this).val()

抓取所选选项的值属性
$('body').on("change", 'select', function() {

   $('#mainstage').load($(this).data('options') + '&' + $(this).attr('name') + '=' + $(this).val());

})

希望这有帮助