0

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>

ただし、この div には HTML はロードされません。何か案は?

解決策: のコールバック関数にデータを返すだけで済みましたload()

4

2 に答える 2

1

受け取ったコンテンツが次の場合:

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

Html を受信せず、コンテンツがターゲット要素の にdiv渡される前に取り除かれたスクリプト コンテンツのみを受信したため、あなたは空です。.html()

スクリプト コンテンツが div でレンダリングされることを期待していましたか、それともリクエスト#alert-container中にスクリプトが実行されることを期待していましたか?.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 コードが実行された後にアラートがポップアップするようにします。アラートを発生させたいのは、load()関数からではなく、このphpコードからです

その場合は、デザインを再検討します。あなたの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 に答える