0

概要:基本的なjqueryuiダイアログが定義され、後でマークアップが挿入されてオンデマンドで開かれます。

問題:最初の例は機能しますが、2番目の例(一見似ている)は機能しません。開いた順番に違いはありません。動作していないものを先に開いても動作しません。私が明らかに鈍いことをしたかどうかを確認するために、2番目の目をいただければ幸いです。

注:これらは大きなコードフィールドからのスニペットであるため、plsは一致する括弧をチェックしません。アスタリスクで囲まれた2番目のjqueryuiダイアログを除いて、すべてのコードが機能しています。Ajaxは正しいデータなどを返します。2番目のダイアログの上のアラートも機能しますが、そのダイアログは表示されません(コード内のアラートの有無にかかわらず)。

2番目のダイアログ呼び出しはajaxコールバック関数内にあります。返されたデータを#alertdivにバインドするには、どういうわけか.on()メソッドを使用する必要がありますか?(私はそうは思わないでください...少なくともdiv-空のdlgボックス-が表示されるはずです、違いますか?)もしそうなら、それはどのように見えるでしょうか?

HTML:

<div id="alert" title="Alert"></div>

JAVASCRIPT:

$(function() {
    $( '#alert' ).dialog({
        autoOpen:false,
    });

$(document).on('click', '.mledit', function(event) {
    //company_id is actually the user_id
    var user_id = this.id.split( 'editcopro_' )[1];
    $.ajax({
        type: "POST",
        url: "ajax/ax_all_ajax_fns.php",
        data: 'request=edit_company_data&user_id='+user_id,
        success:function(data){
            $('#co_label').html(data);
            $('#co_label').dialog({
                autoOpen: true,
                height: 600,
                width: 800,
                modal: true,
                buttons: 
                    {
                    //***************************************
                    //******** THIS WORKS *******************
                        Test: function() {
                            $( '#alert' ).html( 'Hello there' );
                            $( '#alert' ).dialog( 'open' );
                            return false;
                    //***************************************
                        },
                //... etc ...
    $.ajax({
        type: "POST",
        url: "ajax/ax_all_ajax_fns.php",
        data: 'request=index_list_contacts_for_client&user_id=' + user_id,
        success: function(data) {
            $('#contact_table').html(data);
            var tbl = $('#injected_table_of_contacts');

                $(this).dialog({
                    autoOpen: false,
                    height: 400,
                    width: 600,
                    modal: true,
                    buttons: 
                        {
                            Okay: function() {
                                $.ajax({
                                    type: "POST",
                                    url: "ajax/ax_all_ajax_fns.php",
                                    data: 'request=update_edited_contact_data&contact_id='+contact_id+'&fn='+fn+'&ln='+ln+'&em='+em+'&cp='+cp,
                                    success: function(data) {
                                        alert(data);
                                    //**********************************
                                    //***** THIS DOES NOT: *************
                                        $( '#alert' ).html( data );
                                        $( '#alert' ).dialog( 'open' );
                                    //**********************************
                                        window.location = '' //THIS LINE AUTO-CLOSES THE DLG!;
                                    }
                                });
                                $( this ).dialog( "close" );
                            } //END ELSE
                        },
                        Cancel: function() {
                            $( this ).dialog( "close" );
                            window.location = '';
                        }
                    } /*,
                    //IMPORTANT DISCOVERY: Having this close section AUTO-CLOSES the prev dialog popup!
                    close: function() {
                        //alert('here i am');
                        window.location = 'index.php';
                    }*/
            })
        }
    });



});
/*********** >Snip< *************/

完全なコードは巨大です(r)ので、質問に必要なビットを切り取りました。一致する括弧などを注意深く見すぎないでください。alert()は正常に機能します。これは.dialog()呼び出しだけであり、2番目の呼び出しだけです。以前のものは正常に機能します(内部からのダイアログ呼び出しを含む)。ダイアログ)。

4

2 に答える 2

0

その非常に重要なことですが、ajax呼び出しを閉じるのを単に忘れましたか?

}});
于 2012-10-15T21:40:57.543 に答える
0

解決しました。私が解決策にコメントしたコードの2つの場所を参照してください。サンクは誰ですか?

于 2012-11-09T19:51:34.247 に答える