javascript分配字符串问题

时间:2013-12-15 17:56:42

标签: javascript

我在向变量分配字符串然后返回它时遇到问题。这听起来很简单,应该但是我完全迷失了为什么正在发生的事情正在发生。 我的代码:

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;
}

我强调了相关问题的评论问题。任何帮助都是适用的。

3 个答案:

答案 0 :(得分:2)

建议您阅读评论中的链接文章。

你需要的是这样的东西:

function drawpills(callback){
    var picid;
    $.post('js/fetchdata.php', function(data){
        var pcid = data; // process pcid here
        callback(pcid);
     });
}

答案 1 :(得分:0)

问题是AJAX的异步行为。发送AJAX响应时,无论调用是否已完成执行,它都会移动到下一个语句。你现在可以做两件事之一。您可以使AJAX同步,这可能会破坏页面上事件的时间,或者您可以创建一个回调,以便在AJAX调用完成时执行。

答案 2 :(得分:0)

$。post callback是异步函数,所以:

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;
}