字符串问题的javascript赋值
javascript assignment of a string issue
我在将字符串分配给变量然后返回时遇到问题。这听起来很简单,应该很简单,但我完全不知道为什么会发生这种情况。我的代码:
function drawpills() {
var picid;
$.post('js/fetchdata.php', function (data) {
var clock = document.getElementById('clock');
clock.innerHTML = "<img src='images/clock/pill.png' alt='pill_image' id='pillpic" + data + "'/>";
picid = "pillpic" + data;
alert(picid); //if i run it here i get pillpic31 which is what i want
});
alert(picid); //if i run it here i get undefined which is not what i want and which is what is being returned
return picid;
}
我在相应的行中强调了这个问题。任何帮助都会得到通知。
建议您通读评论中的链接文章。
你需要的是这样的东西:
function drawpills(callback){
var picid;
$.post('js/fetchdata.php', function(data){
var pcid = data; // process pcid here
callback(pcid);
});
}
问题在于AJAX的异步行为。当AJAX响应被发送时,无论调用是否已经完成执行,它都会转移到下一条语句。你现在可以做两件事中的一件。您可以使AJAX同步,这可能会中断页面上事件的时间,也可以创建一个回调,以便在AJAX调用完全完成时执行。
$post回调是异步函数,因此:
function drawpills(){
var picid;
var callback = function(data){
var clock = document.getElementById('clock');
clock.innerHTML="<img src='images/clock/pill.png' alt='pill_image' id='pillpic"+data+"'/>";
picid="pillpic"+data;
alert(picid);
}
$.post('js/fetchdata.php', callback);
//picid is undefined,because callback is running until server response data.
//unless you using synchronous request
alert(picid);
return picid;
}
相关文章:
- Javascript变量赋值|
- Javascript-根据赋值顺序,按键合并对象数组
- Javascript:应为赋值或函数调用,但实际看到的却是表达式
- 将ECMAScript 6析构函数赋值(ES2015)重构为旧版本的javascript
- 如何在javascript中为全局变量赋值
- Javascript:JSHint:应为赋值或函数调用,但实际看到的却是表达式
- JavaScript:在嵌套循环中为数组赋值
- Javascript赋值运算符的奇怪行为
- onchange赋值的Javascript位置
- 我可以在javascript中的回调函数中为变量赋值吗
- JavaScript 变量赋值的行为令人惊讶
- 无法为变量赋值 - Javascript
- 未捕获的ReferenceError:赋值javascript中的左侧无效
- 如何在cookie中赋值Javascript
- 使用php赋值javascript变量
- 赋值javascript时,浮点负变量未设置为零
- 数组声明&赋值(JavaScript)
- 变量赋值 - JavaScript 三个赋值
- 变量赋值 - Javascript: array1[0] = array2[0];这是按值传递还是按引用传递
- 变量赋值 - Javascript 赋值问题