thinkphp、thinkphpajaxにおけるajaxとphpの応答処理の詳細説明
この記事では、例を通じて thinkphp の ajax および php 応答プロセスを分析します。参考のためにみんなで共有してください。具体的な分析は次のとおりです:
通常、フロントエンド ページの検索結果で気に入らないコンテンツ (リンク) を削除します。Web サイト全体のプログラミング フレームワークは thinkphp であり、js で ajax を使用してページに応答し、バックエンド ページを呼び出します。 -end php インターフェースを実装し、フロントエンドとバックエンドのデータベース間の接続を同時に実現します。
最初に行う必要があるのは、フロントページに「削除」というテキストを追加することです:
コードをコピーします コードは次のとおりです:
上記の HTML コードの意味は、削除用の href を追加することです。この href は、ハイパーリンクの機能に似ています。もちろん、私のような初心者は、通常のハイパーリンクとは異なります。はい、Web ページには javascript: void(0) がたくさんあります。ユーザーが削除をクリックした後、実際の対応する js 関数に応答することをプログラムはどのようにして知るのでしょうか?心配しないでください。これが、削除のために id や class などのタグが追加されている理由です。コードは次のとおりです。
コードをコピーします コードは次のとおりです:
jQuery(".list a.delete").click(function(){
If(confirm("削除してもよろしいですか?")){
var id = jQuery(_this).attr("id");
jQuery.ajax({
URL: '/Search/index.php/Jason/delete?',
データ: {'id':id},
データ型: 'json'、
成功: 関数(データ){
var del = data.del;
If(del == 1){//正常に削除されました
jQuery("#"+id).parents(".list").remove();
} else {//削除が失敗した
alert("削除に失敗しました");
}
});
}
});
関数の先頭に注目してください: jQuery(".list a.delete").click()。jQuery の後のタグは非常に重要です。これにより、jQuery がページ上のユーザーのクリックの「位置」に正確に応答できるようになります。追加 イベントは click() です。 click のイベントに応答するコードを追加します。 var id = jQuery(_this).attr("id"); この ID は使用されるリンク ID であるため、 a に対応する ID を取得します。データベースを削除する場合、もちろん、この直接的なクリア テキストの方法は適切ではありません。ここでは、応答プロセス全体を紹介するだけです。 ajax を呼び出してプロセス全体を非同期に実行します。 js 文字列を受け入れるように js を設定しました。まだ試していない方法がたくさんあるはずです。興味があれば、自分で試してみてください。 /Search/index.php/Jason/delete? この文は、js が php をリクエストするためのインターフェイスです。php インターフェイスで使用されるコードは次のとおりです。
PHP インターフェースを探すときは、ajax のパスに注意してください。つまり、削除関数は JasonAction.class.php に配置する必要があります。この例は次のようにする必要があります。
コードをコピーします
コードは次のとおりです:
パブリック関数 delete(){
If($this->isGet()){
$userId = session("uid");//ユーザーログイン
If(!empty($userId)){
$a = M('***');
$id = $this->get('id');
$result=$a->where("id=$id")->delete();//削除
If($result > 0){
$arr = array("del"=>'1');
$arr = array("del"=>'0');
$json_str = json_encode($arr);
echo $json_str;//js に戻ります
}
上記のコードは誰もがよく知っていると思いますが、プロセス全体は thinkphp フレームワーク内で構成されています。
var del = data.del; この文は、php コードによって返された json 文字列のキー del の値を受け入れ、フォアグラウンドのページを更新して応答します。
コードをコピーします
コードは次のとおりです:
if(del == 1){//正常に削除されました
jQuery("#"+id).parents(".list").remove();//この文は、バックグラウンドでの削除が成功した後、対応する div がフォアグラウンドで直接削除されるため、パフォーマンスが低下することを意味します。バックグラウンド データをフロントエンド ページに再抽出する必要はありません。
}else{//削除に失敗しました
アラート("削除に失敗しました")
}
応答プロセス全体は次のようになります。効果の最適化については、後で、私の周りの同僚が、フロントデスクで応答リンクを削除することによる別の動的効果を教えてくれました。
近日公開予定:
コードをコピーします
コードは次のとおりです:
jQuery("#"+id).parents(".list").remove();
次のように置き換えます:
コードをコピーします
コードは次のとおりです:jQuery("#"+id).parents(".list").slideUp("slow", function(){
jQuery(this).remove();
});
ぜひ試してみてください。効果は非常に優れています。反応プロセスは記録されています。これは単なる私個人の意見と理解です。
この記事が皆さんの ThinkPHP フレームワークに基づく PHP プログラムの設計に役立つことを願っています。
http://www.bkjia.com/PHPjc/923905.html
www.bkjia.com
true
http://www.bkjia.com/PHPjc/923905.html
技術記事
thinkphp、thinkphpajax における ajax および php の応答プロセスの詳細な説明 この記事では、thinkphp における ajax および php の応答プロセスを例とともに分析します。参考のためにみんなで共有してください。具体的な分析は次のとおりです: 一般的に、フロントデスクは...