wordpress 處理 ajax 請求

地球沒有花發表於2017-11-08

背景:

我寫了一個widget,這個widget裡有一個form,我要把form裡的東西通過ajax打到wordpress處理並返回內容。


步驟:

1、寫一個widget

寫widget需要繼承WP_Widget類,然後重寫widget()、update()等方法。

具體可以參考其他的文件來編寫一個widget。

在這個widget()裡,我加了一段js:

其中需要著重說明的是ajax的url欄位data欄位的action欄位其中url為http://your_domain.com/wp-admin/admin-ajax.php,因為要想處理ajax請求,必須打到這個地址。

data欄位是要傳送的資料嘛,裡面必須包含action欄位,並且,這個action的值必須是一個名字handler,先放一邊。

var ajaxurl = '<?php echo admin_url('admin-ajax.php')?>';
$('#submit').click(function(e){      
                        $.ajax({
                                type:'post',
                                url:ajaxurl,
                                data:{'action':'handler','a':$('#a').val(),'b':$('#b').val(),'c':$('#c').val()},
                                cache:false,
                                dataType:'json',
                                success:function(result){
                                        $('.recordimg img').attr("src",result);
                                },
                                error:function(data){
                                        alert("err");
                                }
                        });
                        return false;
                });


2、編寫處理ajax請求的函式

在theme/functions.php裡新增如下程式碼:

首先第一點,這兩片段程式碼中的加粗字型必須一致。

其次鉤子函式必須是wp_ajax_* (這個是admin使用者的許可權)和 wp_ajax_nopriv_*(這個是普通使用者的許可權)

最後handler()函式裡必須有一個 echo 和 wp_die()或die()結束。並且 echo的必須是string型別

function handler(){
    echo json_encode("data:image/jpeg;base64,".base64_encode(file_get_contents($pic_folder.'after.jpg')));//這裡我返回了一個圖片的base64串。
    wp_die();
}
add_action( 'wp_ajax_handler', 'handler' );
add_action( 'wp_ajax_nopriv_handler', 'handler' );



對基本就是這樣了。


參考:

http://w4dev.com/wp/wp_ajax

http://www.cnblogs.com/huangcong/p/4773366.html

http://blog.csdn.net/Q1059081877Q/article/details/46367249

相關文章