ajax在header.php中不起作用

时间:2013-12-07 17:22:34

标签: php ajax wordpress

我正在学习WordPress中的Ajax并参考一些教程。现在我使用名称字段的简单形式制作了这个Ajax脚本。我在header.php文件中调用此脚本。实施后我得到了0。为什么以及如何解决它。有人可以指导我为什么会发生这种情况。

我的代码:

<script type="text/javascript">
jQuery('#newCustomerForm').submit(ajaxSubmit);

function ajaxSubmit(){

    var newCustomerForm = jQuery(this).serialize();

        $.ajax({
            type:"POST",
            url: "http://localhost/woocommerce/wp-admin/admin-ajax.php",
            data: newCustomerForm,
            success:function(data){
                $("#feedback").html(data);
            },
            error: function(errorThrown){
                alert(errorThrown);
            }  
        });

        return false;
}

如果有人指导我,我将不胜感激:)

感谢。

2 个答案:

答案 0 :(得分:1)

将此添加到您的ajax调用

action  : 'search_action',
url: "http://localhost/woocommerce/wp-admin/admin-ajax.php",
data: newCustomerForm,

如果ajax请求进入,则需要一个函数whitch将被wordpress调用:

function ajax_handler() {

    $response = array( 'status' => 'error' );

    // do your thing here
    // $_POST is available
    // and and something like $response['text'] = 'all done'; or so
    $response['status']     = 'success';


    header( 'Content: application/json' );
    echo json_encode( $response );
    die;

}

add_action( 'wp_ajax_search_action', 'ajax_handler' );
add_action( 'wp_ajax_nopriv_search_action', 'ajax_handler' );

您可以看到为登录用户调用了一个操作,而未登录用户调用了一个操作(wp_ajax_nopriv_search_action)。在这种情况下,这两个动作调用相同的函数。

在这里阅读更多内容: http://www.garyc40.com/2010/03/5-tips-for-using-ajax-in-wordpress/

答案 1 :(得分:0)

将所有jQuery替换为$

更新: 您还没有将所有jQuery更改为$! 变化:

jQuery('#newCustomerForm').submit(ajaxSubmit);

function ajaxSubmit(){

    var newCustomerForm = jQuery(this).serialize();

为:

$('#newCustomerForm').submit(ajaxSubmit);

function ajaxSubmit(){

    var newCustomerForm = $(this).serialize();