0

jquery メッセージ ボックスの次のコードがあります。次のリンクをクリックすると、メッセージ ボックスが表示されます。

<p><a id="msgup" class="">Demo Top</a></p>
<script>
    $("#msgup").bar({
        color            : '#1E90FF',
        background_color : '#FFFFFF',
        removebutton     : false,
        message          : 'Your profile customization has been saved!',
        time             : 2000
    }); 
</script>

今私が達成しようとしているのは、ajaxサーバーの応答の値として「コールド」になったときにメッセージボックスを表示することです。これを達成するために、次のコードを試しました。しかし、それは機能していません。jquery関数の呼び出しに失敗している可能性があります。それを機能させる方法を教えてください。

$.ajax({  
    type: "POST",
    url: "<?php echo base_url(); ?>contents/hello",
    data: "id="+a_href,
    success: function(server_response) {
        if (server_response == 'cold') {

        //Beginning of the code for message box
        $("#msgup").bar({
            color            : '#1E90FF',
            background_color : '#FFFFFF',
            removebutton     : false,
            message          : 'Your profile customization has been saved!',
            time             : 2000
        });
        //End of the code for message box

        // Instead of the message box code I have tried 
        // alert('Message'); and it worked
        }                       
        else {
            $("#result").html(server_response);
        }               
    }                              
}); //$.ajax ends

前もって感謝します :)

4

4 に答える 4

2
$("#msgup").bar(…)

クリック イベントを #msgup (推測) にバインドするため、ajax コード内から呼び出しても役に立ちません。目標を達成する方法の 1 つは、$.bar を初期化し、ajax コードからクリックをトリガーすることです。おそらく次のようになります。

<p><a id="msgup" class="">Demo Top</a></p>
<script>
    $("#msgup").bar({
        color            : '#1E90FF',
        background_color : '#FFFFFF',
        removebutton     : false,
        message          : 'Your profile customization has been saved!',
        time             : 2000
    });
    $.ajax({
        type: "POST",
        url: "<?php echo base_url(); ?>contents/hello",
        data: "id="+a_href,
        success: function(server_response){
            if (server_response == 'cold'){
                //Beginning of the code for message box
                $("#msgup").click();
                //End of the code for message box
           } else {
              $("#result").html(server_response);}                   
           }
        }                             
    });   
</script> 
于 2012-05-21T15:48:11.280 に答える
0

alert()またはconsole.log()を成功関数に入れることができます。を呼び出しalert(server_response)ます。または、alert(typeof(server_response))。エラー:条件を追加することで、AJAXが正しく戻ってくるかどうかを確認することもできます(success:のように独自の関数呼び出しを使用します)。

私の推測では、''の代わりに、リテラル'null'またはオブジェクトnullをチェックする必要があります。ただし、成功関数に入っている場合に限ります。

if(server_response =='' || server_response =='null' || server_response == null || typeof(server_response)=='undefined'){.. ..

どのように戻ってくるかがわかったら、必要なチェックだけを使用できます。

于 2012-05-21T15:19:49.663 に答える
0

setTimeout(function() { $("#msgup").bar({}); }, 100); でラップしてみましたか? タイミングの問題かどうかを確認するには?もしそうなら、success: に入れるのではなく、complete: に入れるかもしれません。

また、アラートを if() 内に配置して呼び出すと、その時点で #msgup という ID を持つ HTML 要素が存在します (タイミングの考慮に戻ります)。

于 2012-05-21T15:34:59.123 に答える
0

を見るとjquery.bar.js、クリック イベント バインディングの$("#msgup").bar(…)要素を初期化するだけです。"#msgup"クリック イベントが発生すると、jquery.barプラグインは新しい要素を作成し、メッセージ ボックスとして表示します。したがって、クリックイベントを発生させる必要があります。これを試して

$.ajax({  
    type: "POST",
    url: "<?php echo base_url(); ?>contents/hello",
    data: "id="+a_href,
    success: function(server_response) {
        if (server_response == 'cold') {

        //Beginning of the code for message box
        $("#msgup").bar({
            color            : '#1E90FF',
            background_color : '#FFFFFF',
            removebutton     : false,
            message          : 'Your profile customization has been saved!',
            time             : 2000
        });
        $("#msgup").click(); //fire click event
        //End of the code for message box

        // Instead of the message box code I have tried 
        // alert('Message'); and it worked
        }                       
        else {
            $("#result").html(server_response);
        }               
    }                              
}); //$.ajax ends
于 2012-05-21T16:22:48.143 に答える