我有多个按钮代表不同的类别。当用户单击其中任何一个时,我想根据选择提供过滤的数据。我不想发出多个Ajax请求,但不想发出一个请求和一个事件侦听器,该事件侦听器会检查单击了哪个按钮并根据选择提供经过过滤的数据。

下面的代码不起作用,因为我认为if,else语句嵌套在Ajax请求中。如何在不发出多个Ajax请求的情况下达到期望的结果?

$( "#buttonA, #buttonB, #buttonC, #buttonD" ).click(function() {

    $.ajax({
      url: "{% url 'data_for_buttons' %}",
      method: 'GET',
      data : {
      my_category: 1,
             },
      success: function(dataset){

          if (this.id == 'buttonA') {
              alert('Button A is clicked'); // Provide A data to user
           }
          else if (this.id == 'buttonB') {
             alert('Button B is clicked'); // Provide B data to user
          }
          else if (this.id == 'buttonC') {
             alert('Button C is clicked'); // Provide C data to user
          }
          else (this.id == 'buttonD') {
             alert('Button D is clicked'); // Provide D data to user
          }

});

最佳答案

context,您的响应函数需要具有适当的上下文。因此,可以通过以下方式为ajax请求设置它:

context: $(this),
success: function(dataset){
    console.log($(this).attr('id'));
}

07-24 09:44
查看更多