[英]jquery Return ajax response and user defined variable to function
我有一個問題是將定義的變量傳遞給ajax調用中的函數。 應該發生的是點擊一個元素,它應該將被點擊的元素的文本傳遞給函數,做一個與定義的變量無關的ajax調用,將變量和數據從調用返回給另一個函數呈現元素。 當我到達渲染html內容的函數時,變量現在是未定義的。
我的問題是如何將ajax響應數據和與ajax調用無關的用戶定義變量發送到另一個函數?
我的JSON功能:
function getJSONP(url, data) {
return $.ajax(url, {
dataType: 'json',
data: data
});
}
我的點擊事件:
$('.day').on('click', function() {
getTimes($(this).text());
});
我的第一個執行ajax的函數(這是選擇器返回值的地方):
function getTimes(selector) {
console.log(selector);
var eventDate = selector;
getJSONP(CAL_API_URL).then(function(data) {
data = _.valuesIn(data)[5][0];
return data;
}).then(appendTimes(eventDate));
}
我的第二個函數呈現HTML(這里選擇器是未定義的):
function appendTimes(dates, selector) {
console.log(selector);
_.forEach(dates, function(k, v) {
// Returns each event
_.forEach(k, function(k2, v2) {
// Returns multiple objects for each event
var availableTimes = k2.startTime + " (" + k2.open + " spots left!)",
timeId = k2.id;
$('.timeslot select').append('<option data-id="' + timeId +'">' + availableTimes + '</option>');
});
});
}
在這種情況下,如果您將appendTimes
切換為僅接受selector
並讓它返回一個函數,則在數據可用時將調用返回的函數。
function appendTimes(selector) {
console.log(selector);
return function (datas) {
_.forEach(dates, function(k, v) {
// Returns each event
_.forEach(k, function(k2, v2) {
// Returns multiple objects for each event
var availableTimes = k2.startTime + " (" + k2.open + " spots left!)",
timeId = k2.id;
$('.timeslot select').append('<option data-id="' + timeId +'">' + availableTimes + '</option>');
});
});
}
}
您正在調用該方法,而不是為其分配引用
}).then(appendTimes(eventDate));
需要使用閉包或綁定
}).then(function() { appendTimes(eventDate) });
你也不能從承諾中返回,所以return data
是無用的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.