完成上一个功能后调用一个函数

时间:2011-01-23 17:53:21

标签: javascript ajax

我正在努力实现这一目标:

function doThis()
{
    firstFunction(function()
    {
        closeWindow();// close window only after firstFunction() completes
    });
}

从一个按钮调用doThis()。 firstFunction()是完成后的AJAX调用,必须调用第二个非AJAX函数alert()。不知何故,代码无法按预期工作。 firstFunction()工作正常,被称为罚款。但是window.close似乎没有被调用。

任何建议伙伴们?请不要使用jquery代码。

更新


让我详细说明一下。函数doThis()是从提交链接调用的。

<a href="#" name="sumbit" onClick='doThis()'><img src="img.png"/></a>

按下此链接后,需要提交表单,并且需要关闭此弹出窗口。 firstFunction()使用XMLHttpRequest POST这个表单,当我像这样使用它时工作正常:

<a href="#" name="sumbit" onClick='firstFunction()'><img src="img.png"/></a>

使用doThis()我首先尝试发布表单然后只关闭表单弹出窗口但是还没能。

更新2


正如delnan所提​​到的那样,事实证明firstFunction没有调用作为参数传递给它的函数。使这些改变了,它现在运作良好:

function firstFunction(callback)
{
//do ajax stuff
callback(); //calls closeWindow()
}
谢谢你们!

2 个答案:

答案 0 :(得分:0)

声明你的功能:

function firstFunction(callback) {
     // setup XMLHttpRequest / IE equivalent
}

并在readystatechange事件处理程序中调用回调:

if(this.readyState == 4 && this.status == 200) {
     // other stuff
     callback();
}

如果你已经这样做了,那么你可能在firstFunction的某个地方出现了错误,你必须显示它的实现。

或永远不会调用doThis

答案 1 :(得分:0)

您是否肯定您的AJAX代码正常运行。我的意思是你怎么知道,因为回调函数没有被执行? 从invokation本身开始,你可以在没有包装函数的情况下传递警报(到firstFunction)。