2012-04-11 5 views
12

jQuery Ajaxコールの成功関数を正常に動作させるのに問題があり、私のPHP関数がreturn $ resultを使用しているということが私に指摘されました私はecho $ resultを使用しなければなりません。php echoとjQuery ajaxコールのリターンの違い

Ajaxが "return $ result"から "echo $ result"に呼び出したPHP関数を変更すると、問題は解決しましたが、なぜですか? PHPスクリプトの点で2つの違い(リターンとエコー)の違いについて多くの説明がありますが、その値をAjax呼び出しに送信するとどのように違いますか?

答えて

20

よく、ajax呼び出しはサーバーからの応答を読み取り、その応答は、application/jsonまたはtext/htmlのような何らかのタイプの読み取り可能なデータとしてレンダリングする必要があります。

このデータを書き込むには、PHPを使用してサーバからechoにする必要があります。

returnステートメントはデータを書き込まず、単純にサーバーレベルで戻ります。

8

Ajax呼び出しでは、HTTP要求の応答が使用されます。 PHPスクリプトは、退却することによって出力を生成するのではなく、エコーすることによって出力を生成します。

2

echoコマンドは、データをスタンダード出力に出力します。これは、データを要求したクライアントのWebブラウザアプリケーションにあります。 CLIでは、コンソールにデータを表示します。 そしてreturnコマンドは値で関数を終了しますが、何も印刷しません。

PHP関数の間で通信したい場合は、returnを使用する必要があります。しかし、の出力をにする場合は、echoを使用する必要があります。

5

Ajaxコールは、私たちと同じ方法でデータを参照し、文字列として読み取ります。基本的に別のウェブページにアクセスして結果を「受け取っています」。 PHPの 'return'はサーバ上の値だけを返しています。 Ajax呼び出しが行われたときに、実際に見ているページにデータが書き出されるように、実際にデータを出力する必要があります。