Javascript jquery值未更新
当此函数执行时,函数返回98而不是99。两个警报显示98,那么99。如何使我的函数返回99。我认为这里的问题是在服务器页面mkreward.php响应之前返回函数。如何使函数在服务器响应之后返回将返回放入回调函数中:Javascript jquery值未更新,javascript,jquery,Javascript,Jquery,当此函数执行时,函数返回98而不是99。两个警报显示98,那么99。如何使我的函数返回99。我认为这里的问题是在服务器页面mkreward.php响应之前返回函数。如何使函数在服务器响应之后返回将返回放入回调函数中: function addrewarddb() { var rval="98"; $.post("db/mkreward.php",{ proid:getURLParameter("id") },function(data){
function addrewarddb()
{
var rval="98";
$.post("db/mkreward.php",{
proid:getURLParameter("id")
},function(data){
rval="99";
alert(rval);
});
alert(rval);
return rval;
}
$.post调用是异步的 这意味着函数在HTTP请求完成之前返回 然后,$.post()调用完成后,它会更新变量并发出警报 从: 异步布尔默认值:默认情况下为true,所有请求都被发送 异步(即默认设置为true)。如果你需要 同步请求,将此选项设置为false。跨域请求 和数据类型:“jsonp”请求不支持同步操作。 请注意,同步请求可能会暂时锁定浏览器, 在请求处于活动状态时禁用任何操作。从jQuery 1.8开始, 不推荐在jqXHR($.Deferred)中使用async:false;你 必须使用完整/成功/错误回调
您有
async
ofpost
调用,您的return语句将在调用回调函数之前执行。您可以从addrewarddb()
返回post
对象,并像这样调用complete
function addrewarddb()
{
var rval="98";
$.post("db/mkreward.php",{
proid:getURLParameter("id")
},function(data){
rval="99";
alert(rval);
return rval;
});
}
您可以使用
function addrewarddb()
{
var rval="98";
return $.post("db/mkreward.php",{
proid:getURLParameter("id")
})
}
addrewarddb().complete (function (data){
alert( data);
return data;
});
或者等待回调函数获取结果这是因为
$。post
异步工作$post
只是$的缩写。ajax
。要能够告诉$.post
同步工作(这是您想要的)您必须使用$.ajax
函数的翻译应该是这样的:
$.ajax({
type: 'POST',
url: url,
data: data,
success: success,
dataType: dataType,
async:false
});
查看jquery站点了解详细信息
function addrewarddb() {
var rval = "98";
$.ajax({
type: "POST",
url: "db/mkreward.php",
data: { proid: getURLParameter("id") },
async: false,
success: function (msg) {
rval = "99";
alert(rval);
},
error: function (jqXHR, textStatus) {
}
});
alert(rval);
return rval;
}