2

HTML ページのフォームが送信時に更新されないようにしたいのechoですが、PHP ファイルのコマンドが HTML ファイル内から JavaScript を呼び出せるようにしたいと考えています。

これまでのところ、すべてのechoコマンドが実行されていません。これは私が期待したものではありません。

HTML および PHP ファイルのコードを次に示します。

HTML:

<script type="text/javascript">

function functionInFile() {
    alert("recieved");
}

    $(function() {  
      $(".postform").submit(function() {  
      var content = $(this).serialize();

      $.post('signup.php?', content);

      return false;

      });  
    });     

</script>

そしてPHP:

echo '<script type=\'text/javascript\'>functionInFile()</script>';

したがって、基本的には、送信をクリックしたときにリダイレクトされずに、PHP ファイルが HTML ファイル内の関数を呼び出せるようにしたいと考えています。

どんな助けでも感謝します。

4

3 に答える 3

3

の成功コールバックを使用して$.post()、PHP が返す関数を実行できます。これを試して:

PHP

// do some stuff with the posted data
echo 'functionInFile'; // name of js function to execute in calling page

jQuery

function functionInFile() {
    alert("recieved");
}

$(function() {  
    $(".postform").submit(function() {  
        $.post(
            'signup.php?', 
            $(this).serialize(),
            function(func) {
                window[func]();
            },
            'text'
        );
        return false;
    });  
});
于 2012-04-27T11:06:26.277 に答える
1

のコールバック関数を使用する方が良いかもしれませんpost

jQuery.post( URL [, データ] [, 成功(データ, テキストステータス, jqXHR)] [, データタイプ] )

したがって、返信または事前に決定されたログイン内にあるコードを実行しますonsusccess

$.post( 'signup.php?', content,
      function( data ) {
          //data contains the reply of the post so you can 
          //exec the code like this using JavaScript
          //altogether eval is frowned upon because it is high overhead and opens
          //opens up to code injection or whatever
         //eval(data);
         //so you just execute whatever method you need
         functionInFile();
        //or you reply from server in json and converto tobject
        //reply: {'executeFunction': true}
       var obj = jQuery.parseJSON(data);
       if (data.executeFunction == true) { functionInFile(); }

      }
    );

パースJSON

PHPエコーが機能するために。サーバー側であるため、ページをリロードする必要があります。

Web ページのサイクルは、サーバー側、次にクライアント側です。

[サーバー] -> [クライアント -> AJAX からサーバーへ -> サーバー応答アタッチ]

于 2012-04-27T11:13:13.593 に答える
0

正しい<script>タグを送信しているようです。ただし、XHR の戻り値は、実行可能コードではなく、データとして扱われます。幸いなことに、jQuery には、DOM に<script>タグを挿入して実行するかどうかをチェックするコードがあります。あなたはただできるはずです:

$.post('signup.php?', content, function(html) {$(document).append(html);});

スクリプトが実行されます。

(ただし、これを別の方法で実現することをお勧めします。私は、AJAX 呼び出しで大部分の JavaScript を送り返すアプリに取り組んできましたが、デバッグが面倒です。JSON オブジェクトを次のアクションの文字列、次に「承認された」アクションのオブジェクトを文字列として保持します -> 関数ルックアップ テーブル。)

于 2012-04-27T11:20:16.927 に答える