2011-10-28 10 views
1

私はAJAXについて知り、ローカルサーバーからの最初の要求を行い、XMLまたはHTMLファイルのみを要求しました。私はPHPを使って作業していますが、XML/HTMLを使用するよりもあまり違いはありません。AJAXリクエストからPHPを使って情報を返す方法は?

私はチュートリアルを行っていますが、情報をJavaScriptに戻す方法はいくつかあります。私は、「正しい」道があるかどうか、あるいはこれを行う「もっと正しい」道があるかどうかについて興味があります。私はブラウザにサーバーからの情報を返す処理の単純わからないんだ

<?php 
$foo = $_GET['bar']; 

// manipulate $foo 

exit($foo); // method 1 
echo $foo; // method 2 

// method 3: 
?> 

<div id='baz'> 
    <p> 
     Some output to be returned to JavaScript as the 'responseText' 
     property of the AJAX request. 
    </p> 
    <p> 
     <?php echo $foo ?> 
    </p> 
</div> 

someFile.php:これまでのところ私は三つの方法に遭遇してきました。すべてのものが返されますか?人々が実際に訪れるはずだったページであれば、表示されるものは何ですか?ご協力ありがとうございます!私はいつも何

答えて

5

(はい、私はexitを使用する必要はありません。この例では知っている)

<?php 
header('Content-type: text/plain; charset=utf-8'); 
echo $foo; 
exit; 
?> 

です/ブラウザが要求したXML文書AJAXでは、ブラウザはまったく同じことを行います。ドキュメントに特定のURLを要求します。 JavaScriptやJavaScriptを使用してページに統合されるのは、単なるフラグメントまたはJSONだけです。

一般的にAJAXに関しては、これまで "exit(...)"アプローチは見ていませんが、どちらのアプローチも正確ではありません。ドキュメントを生成するものは何でも動作します。

ベストプラクティスに関しては、ドキュメントの生成から計算を分離したいと思うかもしれません。しかし、私は基本的なPHP、HTML、AJAXなどで最初にもっと多くの経験を積むべきだと思います。あなたが書いているアプリケーションが非常に大きくなり、コードの周りにあなたのやり方を見つけるのが難しくなったら、MVC計算の分離(ビジネス/モデルロジック)とドキュメント生成(ビュー)の問題を解決するPHPのフレームワークです。私はSymfonyが普及していると聞きます。

+0

、確かに、PHPから返されるページは、AJAXリクエストでresponseTextとして受け取られるでしょうか?あなたの説明をありがとう、それは本当に私を行った!' – dunnza

+0

"responseText"はAJAXレスポンスを書き込む変数ですか?その場合、はい。 jQueryでは、これは "成功"コールバック関数に渡される "データ"パラメータになります。 – lsinger

0

はあなたがHTML/JSONを生成するプログラムとしてPHPスクリプトを見てする必要があります

+0

このように好奇心の理由から、出口を追加する理由は何ですか? – roselan

+0

それは私だけです。私は、応答に空白がないことを確信しています。 – Peter

+0

okok。それは私だけですが、なぜコードが「何もしない」ものを見るのは嫌いです。なぜ、私が**なぜそれがここにあるのかを理解しようとする時間を費やすからです。** **私は**それをそこに置いた;) – roselan

-1

ユーザーがページに直接アクセスできるようにしたい場合は、上記のコードが正常に動作します。しかし、(_POST ['somevalue'] == 'login')と$ ajaxからPOSTでデータを送信する場合は、ページの上部に置かれたページを安全にしたい場合。 jQuery ajax onSuccess $(div).html(data)などで分かっていれば、残りの部分は同じです!

1

私は通常私が使用するようにサーバーから送信するために複数の値を持っている:

<?php echo json_encode(array('name' => 'Michael', 'email' => '[email protected]'); ?> 

私は、オブジェクトのように簡単にアクセスできます。

alert(response.name); 

jQueryなどのJSライブラリを使用してください。それはかなり簡単です。

関連する問題