一个函数触发一个返回一些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;
}
答案 0 :(得分:2)
由于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);
}
});
}