2017-02-06 9 views
0

私は基本的に私はその後呼び出しアヤックスが正しく実行されていない(PHP)

//File1.php 
$('button.button1').click(function(e){ 
     $.ajax({ 
       type: "POST", 
       url: "file2.php", 

       timeout: 180000 
       }) 
       .done(function(data) { 
       //load data returned in modal 
       }) 
       .fail(function(msg) { 
        //do something 
       }); 
}); 

下に記述する3つのファイルを使用しているやっている、私の次のファイルのロードモーダルコードHTML(ヘッダ、本文、フッター)に「OK」というボタンを押します。 (ボディモーダルボタン「OK」を持つフォームを含む)

//file2.php 

    $('button.ok').click(function(e){ 
       $.ajax({ 
         type: "POST", 
         url: "File3.php", 
         contentType:false, 
         processData:false, 
         cache:false, 
         data: formData, 
         timeout: 180000 
        }) 
        .done(function(data) { 
    //do something 
        } 
        }) 
        .fail(function(msg) { 
         //do something 
        }); 
       }); 

    In my file3.php do bd operations and save the values 

だから、最初のスクリプトからプログラムを実行する際に、ページがインデックスに自動的に返され、クエリがBDで実行されていません、これは何ですか?それは、各ファイルで正しく実行される必要があり、メソッドがポストであることが指定されているときに値がgetメソッド(URLに表示される)を介して送信される理由は?締結するHELP

、私は、AJAX呼び出しを行う一つのボタンを持って、モーダルをロードし、モーダル内の別のAJAX呼び出しが

+1

最初のAJAX呼び出しで 'button.ok'が動的に読み込まれていますか? – Barmar

+0

これは、最初のAJAX呼び出しでdinamicallyロードされます。これは、file2.phpによって返されるフォーム内(つまりモーダル内)にあるためですが、実際にはfile2.phpにロードされています。 – Mvram

答えて

2

jQueryのは、それが実行時にページ内の要素のみを認識しているが行われますしたがって、DOMに動的に追加される新しい要素はjQueryによって認識されません。この問題を解決するには、event delegationを使用して、jQueryがページの読み込みを実行したときにそこにあったDOM内のポイントまで新しく追加されたアイテムからのイベントをバブリングします。多くの人々はバブリングされたイベントをキャッチする場所としてdocumentを使用していますが、DOMツリー全体まで進む必要はありません。理想的にはyou should delegate to the nearest parent existing at the time of page load.

$(document).on('click', 'button.ok', function(e){... 

.on()機能を使用すると、あなたの問題を解決する必要があります。

+0

ごめんなさい。私はこれでとても新しいです。 あなたが言ったように( 'on'を使用して)file1.phpからすべてのAjax呼び出しを作成しようとしましたが、エラーは続行します – Mvram

+0

file1で要求をトリガーしているのは何ですか? –

+0

イベントを 'クリックする'ボタン – Mvram

関連する問題