0

我有一个 AJAX 请求,post-bid.php这是此调用的结果:

$('#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().

4

2 回答 2

1

如果您收到的内容是:

<script type="text/javascript">
    $(document).ready(
        function() {
            alert("My alert")
    });
</script>

div是空的,因为您没有收到任何 Html,而只收到了脚本内容,在将内容传递给.html()目标元素之前将其剥离。

您是否希望脚本内容在#alert-containerdiv 中呈现,或者您是否希望脚本在.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-bid.php', data, function(message){
    if(message.length > 0)
    {
        alert(message);
    }
});
于 2012-08-05T20:41:07.743 回答
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");
            }
        });
    });
});
于 2012-08-05T20:55:07.140 回答