jquery返回ajax响应和用户定义的变量到函数
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
是无用的。
相关文章:
- 带有两个变量函数的Ajax提交表单
- 设置变量函数不起作用
- 为什么使用 ||在变量函数声明中
- Javascript 变量函数不保留值
- 为什么要在函数定义之外引用静态变量(函数属性)
- jQuery 变量函数无法运行
- 循环中的变量函数定义
- javascript onclick设置为变量函数名
- JavaScript:调用已启动类(数据包处理程序)的变量函数
- Javascript测试存根全局变量函数
- Aptana能否识别其他文件中定义的变量/函数
- jquery将其传递给变量函数
- 传递一个变量函数到数组[Javascript]
- 如何使用' this '像一个对象,并通过字符串获得它的变量/函数
- javascript变量/函数的首字母是什么意思?
- Javascript .apply带有变量函数名
- 在JavaScript中添加一个全局变量/函数(特别是NativeScript)
- 变量函数未定义错误
- AngularJS-继续检查变量/函数
- Javascript从本地向全局变量函数添加行