JavaScript 函数返回范围
JavaScript Function Return Scope
>函数触发数据库调用,返回一些Json。然后,此 CID 用于标记新添加的 DOM 元素。
我需要检索/返回存在于 ajax 成功块中的"cid"的值,它将用于更新属性。
错误未定义 CID
//Save New Task
$("body").on('click','.icon-facetime-video',function(event){
var new_entry = $(this).prev().val();
var thebid = $(this).parents('tbody').prev().find('th').attr('id').split('_')[1];
$(this).parent().addClass('tk').html('<i class="icon-eye-open"></i> '+new_entry);
//CALL FUNCTION
var cid = update_entry('new_tk',new_entry,thebid); //value of cid from update_entry
$(this).parent().attr('id','cid_'+cid);
});
function update_entry(typeofupdate,new_entry,thebid){
switch(typeofupdate){
case 'new_tk': var action = 'new_tk';
break;
}
$.ajax({
type:'post',
url: 'posts_in.php',
dataType: "json",
data: {cid : thebid, action: action, content: new_entry},
success: function(data){
var action = data[0],cid= data[1];
console.dir(data);
}
});
return cid;
}
由于 AJAX 是异步完成的(因此 AJAX
中的a
),因此函数在 AJAX 调用完成之前返回。您应该将回调函数传递到 update_entry
中,并在 AJAX 成功处理程序中运行它:
var self = this;
update_entry('new_tk', new_entry, thebid, function(cid) {
$(self).parent().attr('id', 'cid_' + cid);
});
function update_entry(typeofupdate, new_entry, thebid, callback) {
switch(typeofupdate){
case 'new_tk': var action = 'new_tk';
break;
}
$.ajax({
type:'post',
url: 'posts_in.php',
dataType: "json",
data: {cid : thebid, action: action, content: new_entry},
success: function(data){
var action = data[0], cid= data[1];
callback( cid );
console.dir(data);
}
});
}
相关文章:
- 如何将闭包内的值返回到外部范围
- 范围变量返回长度错误
- 如何在 Google 应用脚本中 sendEmail 函数的范围内的唯一非空白列中返回值
- 返回Javascript中给定正则表达式的文本范围数组
- Angular$http返回数据,但不返回'不适用于范围
- d3范围/域返回负值
- 在全局范围内执行文件,而不是返回导出的对象
- 我从闭包返回的函数在外部范围内是否可用
- 我的弹性查询中出错 - 范围返回错误的请求
- 从显示为文本的范围中返回最小和最大数字
- 努力将结果从工厂返回到范围
- 在 Angular JS 中使用服务无法返回范围值
- 如何让此函数从范围中添加或减去并返回它
- 主干.js Model.get() 返回 undefined, 范围使用 coffeescript + coffee t
- Angular js 指令控制器访问范围属性,但返回未定义
- AngularJS 指令范围和$compile - 返回空白的变量
- JavaScript 访问 Angular 范围返回“未定义” - 异步问题
- 角度指令 - 范围返回 0 而不是值
- JavaScript变量范围返回“;未定义”;
- Javascript变量范围返回Undefined