从复选框选择中更改AJAX jQuery url

时间:2015-12-03 09:40:28

标签: javascript jquery arrays ajax checkbox

我有四个复选框,我正在使用jQuery AJAX从API中检索一些JSON数据,我想在复选框选择中动态更改URL。当我将ajax代码放在click功能中时,它可以工作,但是从外部点击功能它不起作用。事实上,我无法在点击功能之外访问类别数组。

我想将类的值存储到全局变量或数组中,所以我可以在Ajax代码中或在代码中的其他位置访问它,我无法弄清楚如何做到这一点。



var category = [];
$(".ckbox").click(function() {
  if ($(this).is(":checked")) {
    category.push($(this).val());
  } else {
    var x = category.indexOf($(this).val());
    category.splice(x, 1);
  }
  console.log(category); //show array on checkbox clicking
});
console.log(category); //show empty array

$.ajax({
  url: 'https://godrejapi-dot-indiacomapi.appspot.com/_ah/api/godrej/v1/godrejestablishment?',
  dataType: 'json',
  type: 'GET',
  data: {
    category: category,
    city: 'PUNE',
    begin: '0',
    limit: '200',
  },
  traditional: true,
  success: function(response) {
    console.log(response);
  },
  error: function(err) {
    alert("something went wrong.");
    console.log(err);
  }
});




2 个答案:

答案 0 :(得分:0)

您的变量范围可能存在问题。 没有看到整个代码,我无法证实这一点。 如果要确保类别变量是全局变量,请将其添加到窗口对象。

window.category = [];

答案 1 :(得分:0)

您需要在事件处理程序中触发以填充全局变量或在函数之间传递局部变量。

window.cat = "";

function show(arg) {
  console.log(arg);
};

function run(categoryInner, f) {
  // You can use window.cat instead of categoryInner but you need to check value.
  $.ajax({
    url: 'https://godrejapi-dot-indiacomapi.appspot.com/_ah/api/godrej/v1/godrejestablishment?',
    dataType: 'json',
    type: 'GET',
    data: {
      category: categoryInner,
      city: 'PUNE',
      begin: '0',
      limit: '200',
    },
    traditional: true,
    success: function(response) {
      console.log(response);
      f(response);
    },
    error: function(err) {
      alert("something went wrong.");
      console.log(err);
    }
  });
}

$(".ckbox").click(function() {
  if ($(this).is(":checked")) {
    category.push($(this).val());
  } else {
    var x = category.indexOf($(this).val());
    category.splice(x, 1);
  }
  window.cat = category;
  run(category, show);
});