2

我有一个 $.ajax() 函数,它请求带有字符串位置的东西。

假设 ajax 响应中的 result.location = "Somewhere",但理论上它可以是任何字符串。

成功(结果)它会:

Line 1: alert("Hello There");
Line 2: alert("Look Here" + result.location); // Look here Somewhere

发生的情况是弹出“Hello There”的警报框,并且直到用户关闭“Hello There”警报框后才显示“Look here”警报框。

但是,如果对于第 1 行而不是警报,我有一个 div 而不是显示的警报框,例如:

<div>Hello There <input type="button">OK</input></div>

所以我有:

Line 1: showDivAlert();
Line 2: alert("Look Here" + result.location); // Look here Somewhere

然后会发生 div 出现并弹出警报“Look Here”。我可以在函数“showDivAlert()”中添加什么,以便在用户单击“确定”按钮之前,showDivAlert() 下面的任何代码都不会被执行?

注意:这里的关键是保留 ajax 请求的 result.location 字符串

4

3 回答 3

0

与其在显示对话框的同一块中定义您的 post-OK 代码,不如在自定义对话框中按下 OK 按钮的事件处理程序应该触发任何其他行为。

像这样的东西:

<div>Hello There <input type="button" onclick="okClicked()" value="OK"/></div>

function okClicked() {
    alert('Look Here');
}
于 2012-05-24T22:02:45.503 回答
0

更改您的 HTML,以便您拥有:

<div>Hello There <input type="button" id="alert-ok">OK</input></div>

现在您可以通过#alert-ok id 定位按钮。

如果您使用的是 jQuery,只需附加一个事件:

showDivAlert();
$("#alert-ok").click(function() {
    //do work
});
于 2012-05-24T22:05:27.473 回答
-1

alert()在javascript中有效地阻塞了执行线程,导致下一行代码直到对话框关闭才被执行。

相反,您showDivAlert();不会阻塞线程并继续正常执行。要解决此问题,您应该在方法中添加回调功能。

与 类似,只有在服务器发出有效响应后才会执行$.ajax()where ;你可以像这样添加一个参数:success

function showDivAlert(callbackOK_){
    //render a fancy popup with a #btn-ok
    $('#btn-ok').click(callbackOK_);//attach the callback passed
}

您指出了另一个result.location“丢失”的答案 - 相反,它在回调函数的执行范围内根本不可用。

showDivAlert(function(){
    alert("Look Here" + result.location);
});  

摆弄

于 2012-05-24T22:49:56.723 回答