2015-12-03 4 views
3

У меня есть четыре флажка, и я извлекаю некоторые данные JSON из API с помощью jQuery AJAX, и я хочу динамически изменять URL-адрес при выборе флажка. Когда я помещаю ajax-код внутри функции щелчка, он работает, но из-за внешней функции щелчка он не работает. На самом деле я не могу получить доступ к массиву категорий вне функции щелчка.Изменить AJAX jQuery url from checkbox selection

Я хочу сохранить значение категории в глобальную переменную или массив, поэтому я могу получить к нему доступ в коде 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); 
 
    } 
 
});

+1

Что вы подразумеваете под контролем 'ajax' наружной функции' click'? Должна быть какая-то исходная точка для правильного запуска 'ajax'? Либо в любом случае или в функции, либо он будет выполняться в 'DOM ready'. Можете ли вы объяснить на примере? –

+1

Если вы не запускаете его в обработчике событий, он запускается только один раз, когда страница загружается. Как он может использовать флажки, которые пользователь выбрал, если он работает до того, как пользователь имеет возможность выбрать что-то? – Barmar

ответ

0

Вы можете иметь проблемы с областью вашей переменной. Не видя всего кода, я не могу это подтвердить. Если вы хотите, чтобы переменная категории была глобальной, добавьте ее в объект окна.

window.category = [];