load()响应正确,但html没有加载到div中

时间:2012-08-05 20:17:30

标签: jquery

我有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()的回调函数。

2 个答案:

答案 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");
            }
        });
    });
});