我正在努力实现这一目标:
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()
}
谢谢你们!
答案 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)。