2015-12-03 130 views
3

更改AJAX jQuery的URL我有四個複選框,我從使用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); 
 
    } 
 
});

+1

通過在''click''外面保留'ajax',你的意思是什麼?必須有一些源碼才能觸發'ajax'嗎?無論是在任何情況下還是在函數中,它都將在'DOM ready'中執行。你能用一個例子來解釋嗎? –

+1

如果您沒有在事件處理程序中運行它,它只會在頁面加載時運行一次。如何在用戶有機會選擇某些內容之前運行用戶選擇的複選框? – Barmar

回答

0

您可以與您的變量的作用域的問題。 沒有看到整個代碼,我無法證實這一點。 如果您想確保類別變量是全局的,請將其添加到窗口對象。

window.category = [];