1

jQueryの助けを借りてサーバーとやり取りしようとしています。

これは私の簡単なシナリオです:

  1. jQuery post メソッドを使用して、html フォームからデータを送信します。
  2. サーバー側でデータを受信し、再度エコーバックします。
  3. jQueryコールバックの形式でクライアント側で同じデータを受け取り、データで何かをします(ブラウザのconsole.log)

今私の問題は、phpが受け取ったデータではなく、タグ付きのソースhtmlコードを返すことです? したがって、クライアント側のフォーム フィールドに「Hello」と入力すると、php はページから HTML ソース全体を返します。何故ですか ?

HTML:

<form action="#">
     <textarea name="content" id="content" rows="8" cols="40"></textarea>
        <p><button>Click to submit</button></p>
    </form>

jquery:

    (function(){
            $("form").on("submit",function(e){
                $.post("save.php",$(this).serialize(),function(data){
                    alert(data);
                })
            e.preventDefault();
            })
    }());

PHP:

<!DOCTYPE HTML>
<html charset="utf-8">
    <head>
        <title>Index</title>
        <link rel="stylesheet" href="path-to-stylesheet.css" type="text/css"/>
    </head>
    <body>
        <?php
            echo $_POST['content'];
        ?> 
    <script src=""></script>
    </body>
</html>
4

2 に答える 2

3

これがあなたの save.php であると仮定します:

<!DOCTYPE HTML>
<html charset="utf-8">
    <head>
        <title>Index</title>
        <link rel="stylesheet" href="path-to-stylesheet.css" type="text/css"/>
    </head>
    <body>
        <?php
            echo $_POST['content'];
        ?> 
    <script src=""></script>
    </body>
</html>

json_encode を実行し、ajax 呼び出しで jSON を解析するだけです。

save.php

<?php
    echo json_encode($_POST['content']);
?> 

jQuery

$.post("save.php",
    $(this).serialize(),
    function(data){
        alert(data);
    }, 'json');
于 2013-02-09T12:15:58.110 に答える
2

完全な html ページをブラウザに送り返しているため、データだけを受信するわけではありません。PHP ファイルを次のように変更すると、期待どおりに動作するはずです。

<?php
echo $_POST['content'];
?>

あなたの場合、PHP が html ページ全体を返したのはなぜですか?

  1. PHP は save.php ファイル全体を解析します
  2. タグがない場合は<?php ?>、コンテンツ全体がそのまま残り、そのままブラウザに送信されます
  3. タグが見つかった場合<?php ?>、パーサーはコードを解釈し、同じ場所に出力します

save.php

<!DOCTYPE HTML>
<html charset="utf-8">
    <head>
        <title>Index</title>
        <link rel="stylesheet" href="path-to-stylesheet.css" type="text/css"/>
    </head>
    <body>
        <?php
            echo $_POST['content'];
        ?> 
    <script src=""></script>
    </body>
</html>

<?php ?>パーサーは 1 つのタグを見つけます。

        <?php
            echo $_POST['content'];
        ?> 

そしてそれを解釈します:(単にそれを仮定して$_POST['content'] == 'john smith'

        john smith

これで、解釈されたコードが挿入され、元のコンテンツの php タグが置き換えられます。

<!DOCTYPE HTML>
<html charset="utf-8">
    <head>
        <title>Index</title>
        <link rel="stylesheet" href="path-to-stylesheet.css" type="text/css"/>
    </head>
    <body>
        john smith
    <script src=""></script>
    </body>
</html>

最後に、これはブラウザーに送信され、jQuery Ajax コールバックによって処理されます。

于 2013-02-09T12:13:58.953 に答える