0

現在、Jquery ロード関数を使用して、php コンテンツを Div にロードしています。しかし、PHP の電子メール フォームを使用すると、すべてが白くなり、インデックス ページが失われます (つまり、メイン レイアウト)。実行する必要がある場合でも、Jquery を使用して Insch.php を div にロードすることはできますか?

 <form id="contactform" method="POST" action="insch.php"> <--- this is my Form

  $('.menut').click(function () {
       var phpFile = $(this).attr('id') + '.php';
      /* alert(phpFile)*/
       $.get(phpFile, function (data) {
           $('#box1').html(data);
       });
       return false;
   });                   <---- my Jquery load function(on index)
4

2 に答える 2

0

返すデータを に直接追加しているよう$("#box1")です。PHP ファイルが返された場合は、ajax リクエストでHtml設定する必要があります。dataType:'html'

于 2013-04-17T20:19:25.360 に答える
0

すみません、あなたの質問はちょっとわかりにくいです。ちょっと推測ですが、ページを更新せずにフォームを送信する方法を尋ねているようです。もしそうなら、あなたはこのようなことをすることができます:

$('.menut').click(function() {
    var phpFile = $(this).attr('id') +'.php';

    $('#box1').load(phpFile, function() { // <-- this is your ready function

        // once the form has been added to the page,
        // add the 'submit' event listener
        $('#contactForm').submit(function(e) {

            // prevent the form from submitting regularly (causing a page refresh)
            e.preventDefault();

            // get the data from the form
            var data = $(this).serialize();

            // submit the form via AJAX and put the response in #box1
            $('#box1').load($(this).attr('action'), data);
        });
    });
});

アップデート:

ready関数は、AJAX 呼び出しで作成する関数であり、コンテンツの読み込みが完了したとき (コンテンツの準備ができたとき) に実行されます。コールバック関数、完了関数、または成功関数と呼ばれることもあります。

上記のコードの 4 行目に追加したコメントを見てください。私があなたの準備ができた機能と呼んでいるものを指摘しました。

あなたの質問では、これを使用しました:

$.get(phpFile, function (data) {
    $('#box1').html(data);
});

これは次と同等です:

$('#box1').load(phpFile);

これにより、応答 (フォーム) が から に読み込まphpFile#box1ます。function (data) { ... }が準備完了関数です。submitここで、イベントをフォームにバインドする必要があります。

私が提案しているようにメソッドに切り替えると、load()メソッドの2番目のパラメーターとして新しい関数(準備完了関数になります)を渡すだけですload()。これは、元の回答で与えた解決策です。

于 2013-04-17T20:27:26.380 に答える