我有post-bid.php
的AJAX请求,这是此调用的结果:
$('#alert-container').load("post-bid.php", data);
根据firebug,这个AJAX请求返回以下代码:
<script type="text/javascript"> $(document).ready(function() {alert("My alert")}); </script>
我在load()
行上面有这行代码:
<div id="alert-container"></div>
然而,没有HTML加载到这个div中。有什么想法吗?
解决方案:我只需要将数据返回到load()
的回调函数。
答案 0 :(得分:1)
如果您收到的内容是:
<script type="text/javascript">
$(document).ready(
function() {
alert("My alert")
});
</script>
您的div
为空,因为您没有收到任何Html,只有脚本内容,在内容传递到目标元素的.html()
之前,内容已被删除。
您是否希望脚本内容在#alert-container
div中呈现,或者您希望脚本在.load()
请求期间执行?
修改
根据某些情况,有条不紊地弹出警报的好方法是什么 在AJAX请求中运行的php?
根据load()
http://api.jquery.com/load/,您似乎可以使用回调断言返回值,然后在调用成功时弹出警报。成功回调在任何返回的html被渲染到目标元素之后执行。
$('#alert-container').load("post-bid.php", data, function(responseText, textStatus, XMLHttpRequest){
// textStatus = 'success' if the call was successful.
if(textStatus == 'success'){
alert("My alert");
}
});
此外,如果你查看文档的底部,还有一个如何处理错误的例子。
修改
我不希望在AJAX请求成功时弹出警报。一世 想要在AJAX请求的一些php代码之后弹出警报 跑。它来自这个PHP代码,而不是来自load()函数 我希望警报来源
在这种情况下,我会重新考虑设计。你的php应该只返回要显示的消息,让调用代码担心how
显示它。
您可以使用ajax post。
$.post('post-bid.php', data, function(message){
if(message.length > 0)
{
alert(message);
}
});
答案 1 :(得分:1)
起初我无法让它工作,但我在加载代码周围放了一个document.ready
并且它有效。
<强> HTML 强>
<button id="click">Click</button>
test1.html的内容
{"result": "true"}
<强>的JavaScript 强>
$(document).ready(function(){
$('#click').click(function(){
$.getJSON("test1.html", function(data){
if (data["result"] == "true") {
alert("My alert");
}
});
});
});