以上问题可能重复,但我不知道为什么它不起作用。我也是jQuery的新手。
以下是该功能的一部分(我现在所写的全部内容)。正在使用锚点标记的onclick
事件触发它。
function changeStatus(user)
{
var esc = true;
$.get('ajax/popupBase.html', user, function(data, stat, d) {
$("#AjaxFrame").html(data);
}, 'html');
$.get('ajax/changeStatus.html', user, function(data, stat, d) {
$("#PopupBody").html(data);
}, 'html');
$("#AjaxFrame").fadeIn('fast');
$("#PopupTitle").html("Status Update");
$("#Popup").center();
popupState = 1;
return esc;
}
以下是我与$.get()
一起使用的模板“popupBase.html”:
注意:“popupBase.html”是我在此网站上可重现的“弹出窗口”窗口,我可以将数据插入空div,并尽可能重用html
<div id="Popup">
<form id="Popup1" method="post">
<div id="PopupTitle"></div>
<div id="PopupBody"></div>
<input class="button" id="Save" name="saveChanges" type="submit" value="OK" />
<input class="button" id="Cancel" name="clearChanges" type="button" value="Cancel" />
</form>
</div>
#AjaxFrame
是我网站上所有html之外的容器(位于<body>
内,#Wrapper
之外)。我的$.get()
来电,我的模板上还有两个空容器,名为#PopupTitle
和#PopupBody
。
问题:将从“changeStatus.html”检索到的html插入#PopupBody
工作正常,但是,从#PopupTitle
添加静态文本无法正常工作。在this possible duplicate的回答中,我尝试使用.text()
无效。
编辑:针对未来读者的说明,我将在每次使用后清除#AjaxFrame
的内容,应该续订ID使用情况。
我尝试过的其他事情:清除Chrome的缓存(包括最新版本和portableapp版本)并反复检查拼写错误。
我对这一点感到困惑,感谢任何帮助。
答案 0 :(得分:2)
你遇到竞争条件,javascript不会等到那些$ .get函数完成后再运行它之后发生的事情。
如果你希望“状态更新”在你的ajax运行过程之后在PopupTitle中,它必须进入成功处理程序
function changeStatus(user)
{
var esc = true;
$.get('ajax/popupBase.html', user, function(data, stat, d) {
$("#AjaxFrame").html(data);
}, 'html');
$.get('ajax/changeStatus.html', user, function(data, stat, d) {
$("#PopupBody").html(data);
$("#PopupTitle").html("Status Update"); //will over write what is in data
}, 'html');
$("#AjaxFrame").fadeIn('fast');
$("#Popup").center();
popupState = 1;
return esc;
}