作为我的主题/标题。这是我的代码
$(document).on("keyup","[name=BNAM]",function(){
var nam = $(this).attr("name");
var val = $(this).val();
var typ = $(this).prev().val();
$.post(
"pro/bulletins_handle.php",
{BTN:"QCHKNAM",BTYP:typ,BNAM:val},
function(data){
alert(nam+":"+val+":"+data); //display to check the return value of data
var reTURN = data; //assign data into reTURN
alert($(this).html());//Error: it say undefined
});
alert(reTURN); //Error: reTURN is not defined
});
**我从帖子返回的是0或1 **
<小时/> 问题:
答案 0 :(得分:3)
首先,您必须将alert(reTURN);
的行移到函数(数据)块中。成功加载数据时,将执行此函数中的代码。下面的代码(即使它在下面)将在数据准备好之前执行,因为js的异步性质。
此外,您在$ .post块中使用的此变量并不意味着您的想法。这段代码应该更好用:
$(document).on("keyup","[name=BNAM]",function(){
var $this = $(this);
var nam = $this.attr("name");
var val = $this.val();
var typ = $this.prev().val();
$.post(
"pro/bulletins_handle.php",
{BTN:"QCHKNAM",BTYP:typ,BNAM:val},
function(data){
alert(nam+":"+val+":"+data); //display to check the return value of data
alert($this.html());
alert(data);
});
});
答案 1 :(得分:2)
所有ajax请求(包括$.post
)执行异步。这意味着可能在请求之后但在回调之外的代码的任何部分很可能在 ajax请求完成之前执行,并且您不能依赖于对该数据的访问。
如果要使用数据,则必须在回调ajax请求时使用它。
this
是一个jQuery XMLHttpRequest对象,而不是DOM
元素。它没有html
方法。做这样的事情:
$(document).on('keyup', '[name=BNAM]', function () {
var $this = $(this);
//$this is now available as the DOM element in the ajax callback