从AJAX函数中修改外部变量
Modify outside variable from within AJAX function?
我使用AJAX请求从数据库中获取一个数值。AJAX函数位于另一个函数内部,该函数应返回AJAX请求的值。但是,由于AJAX请求的返回值是xmlhttp.onreadystatechange函数内的局部变量,因此它不会更改return_count函数的"更高级别"temp_return。我不能让"lower"函数返回值并将其分配给一个变量,因为它已经定义为xmlhttp.onreadystatechange…我如何更改它,使return_count函数返回正确的值,而不是42(为测试目的预定义)?
function return_count(ajax_userid,ajax_date,ajax_KT,ajax_KS)
{
var temp_return = 42;
xmlhttp.onreadystatechange =
function()
{
if(xmlhttp.readyState == 4 && xmlhttp.status == 200)
{
temp_return = xmlhttp.responseText;
}
}
xmlhttp.open("GET", "count.php?userid="+ajax_userid+"&date="+ajax_date+"&KT="+ajax_KT+"&KS="+ajax_KS, true);
xmlhttp.send();
return temp_return;
}
你可以用两种方法。。。
向您回调ajax(RECOMENDED)
创建异步回调以继续您的流;D
function return_count(ajax_userid,ajax_date,ajax_KT,ajax_KS, callback)
{
var otherCallback;
var temp_return = 42;
xmlhttp.onreadystatechange =
function()
{
if(xmlhttp.readyState == 4 && xmlhttp.status == 200)
{
temp_return = xmlhttp.responseText;
if(typeof callback === "function" ) callback(temp_return);
if(typeof otherCallback === "function" ) otherCallback(temp_return);
}
}
xmlhttp.open("GET", "count.php?userid="+ajax_userid+"&date="+ajax_date+"&KT="+ajax_KT+"&KS="+ajax_KS, true);
xmlhttp.send();
return { done: function (callback2){
otherCallback = callback2;
} };
}
你可以像下面这样使用。。。
参数回调
return_count( userid, date, KT, KS, function (count) {
alert("returned " + count);
});
或管道回调
return_count( userid, date, KT, KS)
.done( function (count) {
alert("returned " + count);
});
制作同步ajax
正在添加"false"以标记async。。。
function return_count(ajax_userid,ajax_date,ajax_KT,ajax_KS)
{
var temp_return = 42;
xmlhttp.onreadystatechange =
function()
{
if(xmlhttp.readyState == 4 && xmlhttp.status == 200)
{
temp_return = xmlhttp.responseText;
}
}
xmlhttp.open("GET", "count.php?userid="+ajax_userid+"&date="+ajax_date+"&KT="+ajax_KT+"&KS="+ajax_KS, false);
xmlhttp.send();
return temp_return;
}
但这种方法会锁定用户界面,对用户体验不利。
相关文章:
- 定义函数时,如何捕获外部变量的当前值
- jQuery:如何访问外部变量
- 成功回调中的外部变量未正确更新
- 如何通过pickink外部变量在jsfiddle中执行javascript函数
- JQuery 承诺:访问外部变量或将结果传递给 .done 内部的 IIFE
- JsRender:使用 if 语句将 JSON 对象中的值与外部变量进行比较
- jQuery 函数中的外部变量和作用域
- 在 JavaScript 中维护函数外部变量的值
- 如何从传入的预定义回调访问外部变量
- 基于外部变量重新编译指令
- 从函数更改外部变量
- 从AJAX函数中修改外部变量
- 如何通过Javascript在MongoDB 'where'查询中使用外部变量
- 访问Promise链中的外部变量
- Javascript 构造函数,使用引用其他变量的外部变量进行闭包
- 如何在Angular.js指令中将service.js的内部查询结果绑定到外部变量
- 如果内部函数没有'不要使用外部变量的任何变量
- JS如何访问外部变量's函数
- 从@foreach循环内部访问外部变量
- Javascript:访问匿名函数中的外部变量