用這個文件進行 Ajax 的好處主要有幾點:
安全:WordPress 本身進行了很復雜的安全性優化,如果我們都自己寫是很浪費時間和資源的.
兼容:由于文件是公用的,提供了通用的鉤子,其它插件都可以參與進去.
高效:這個不解釋了,既符合原則(執行到了 init 鉤子),又兼顧了效率問題.
方便:一個鉤子即可輸出代碼,都不用判斷條件.
基本就這幾點了,網上查了一下,發現關于此文件的資料并不多,于是看了下源碼,發現使用其實很簡單.
首先請求這個文件:echo admin_url( 'admin-ajax.php' );
向admin-ajax.php發送請求的時候,有一個必須的參數是action,因為admin-ajax.php需要根據用戶是否登陸了來觸發不同的hooks,代碼如下:
- // 如果沒登陸, 會觸發這個hook
- do_action( 'wp_ajax_nopriv_' . $_REQUEST['action'] );
- // 如果登陸了, 會觸發這個hook
- do_action( 'wp_ajax_' . $_POST['action'] );
- 發出Ajax請求的代碼大概如下:
- jQuery.post(
- MyAjax.ajaxurl,
- {
- action : 'myajax-submit',
- postID : MyAjax.postID
- },
- function( response ) {
- alert( response );
- }
- );
現在,我們只需要在我們的主題文件中處理一下Ajax請求,并不需要在單獨的文件中來處理,代碼如下:
- add_action( 'wp_ajax_nopriv_myajax-submit', 'myajax_submit' );
- add_action( 'wp_ajax_myajax-submit', 'myajax_submit' );
- function myajax_submit() {
- $postID = $_POST['postID'];
- $response = json_encode( array( 'success' => true ) );
- header( "Content-Type: application/json" );
- echo $response;
- // 這個很關鍵啊有木有: 別忘記 "exit"
- exit;
- }
在登錄和未登錄的情況下會分別調用 wp_ajax_nopriv_action參數內容 和 wp_ajax_action參數內容,所以在這里輸出即可,具體可以研究下 admin-ajax.php 文件.
新聞熱點
疑難解答
圖片精選