也许我只是不够聪明。我开始使用jeditable并且工作正常,但我现在已经坚持了几个小时。
我正在使用选择字段,单击显示(感谢jeditable),并且我将编辑后的数据存储在数据库中,到目前为止一直很好。
问题是,我从服务器端得到了一个结果,我必须在编辑的字段中设置。默认情况下,它将设置为选择中所选字段的值。
我不明白为什么在ajax请求完成(或启动?)之前开始返回。所以不可能返回结果。当然,我的第一个想法是我在完成:function()中触发返回,但是没有:)。
$(".columnSelectLine").editable( function(value, settings) {
var result;
$.ajax({
url:'/ajax/jq_ajax_scripts.php',
type:'post',
data:'request=wizardSaveFromTableColumnMapping&dbName='+dbName+'&dbTableName='+dbTableName+'&column='+this.id+'&value='+value,
success: function(data) {
result = data;
},
error: function(req) {
alert("bad");
}
});
console.log(result);
return(result); // result is empty || return(value) works but is the commited value from the select field
}, {
loadurl : '/ajax/jq_ajax_scripts.php?request=wizardGetColumnMappingValues&dbName='+dbName+'&dbTableName='+dbTableName+'&id='+this.id,
type : 'select',
onblur : 'submit'
});
我希望我只是愚蠢,你告诉我它是怎么回事。
答案 0 :(得分:1)
看,你设置结果,然后你调用ajax,然后你运行控制台,然后你返回结果,然后,一次,也许一秒钟后,结果从服务器返回。您需要在成功处理程序中放置数据并设置数据,而不是之前......
因为它被称为ajax,异步,因为你的数据以异步方式返回,但你的脚本是同步运行的,而不是等待服务器的回答,但是成功处理程序会这样做。