AJAX成功响应不起作用,但它正在保存我的更改

时间:2016-04-10 作者:ccmanz

我是jQuery Ajax的初学者,所以请耐心听我说。我的Ajax响应似乎没有加载,但我的更改正在保存。但是在管理ajax上给了我这个错误。php“call\\u user\\u func()期望参数1是有效的回调,未找到函数“\\u update\\u post\\u teru count”或无效的函数名”这是我的函数,你能指出我做错了什么吗?

add_action( \'wp_ajax_nopriv_save_sort\', \'ccmanz_save_reorder\' );
add_action(\'wp_ajax_save_sort\',\'ccmanz_save_reorder\');
function ccmanz_save_reorder() { //checking

//verify user intent
check_ajax_referer( \'wp-job-order\', \'security\' ); // this comes from wp_localize_script() in hrm-jobs.php
//capability check to ensure use caps
if ( ! current_user_can( \'manage_options\' ) ) {
    wp_die( __( \'You do not have permission to access this page.\' ) );
}

$order   = explode( \',\', $_POST[\'order\'] );
$counter = 0;

foreach ( $order as $item_id ) {
    $post = array(
        \'ID\'         => (int) $item_id,
        \'menu_order\' => $counter,
    );

    wp_update_post( $post );
    $counter ++;
}
wp_send_json_success(\'POST SAVED\');
}
我的AJAX调用

jQuery(document).ready(function($) {

sortList = $( \'ul#custom-type-list\' ); //store
var animation = $ ( \'#loading-animation\' );
var pageTitle = $ ( \'div h2\');

sortList.sortable({

update: function ( event, ui) {
    animation.show();

    $.ajax({
        url: ajaxurl, // ajaxurl is defined by WordPress and points to /wp-admin/admin-ajax.php
            type: \'POST\',
            async: true,
            cache: false,
            dataType: \'json\',
            data:{
                action: \'save_sort\', // Tell WordPress how to handle this ajax request
                order: sortList.sortable( \'toArray\' ).toString(), // Passes ID\'s of list items in   1,3,2 format
                security: WP_JOB_LISTING.security
            },
        success: function( response ) {
            animation.hide();
            $(\'div.updated\').remove();
            if( true === response.success ) {
                console.log(sortList.sortable( \'toArray\' ));
                pageTitle.after(  
                \'<div id="messsage" class="updated"><p>\' + WP_JOB_LISTING.success + \'</p></div>\'
                );
            } else {
                $(\'div.error\').remove();
                pageTitle.after( \'<div id="messsage" class="error"><p>\' + WP_JOB_LISTING.failure + \'</div>\' );
            }

        },
        error: function ( error ) {
            $( \'div.error\' ).remove();
            animation.hide();
            //pageTitle.after( \'<div id="messsage" class="error"><p>\' + WP_JOB_LISTING.failure + \'</div>\' );
        }
    });

}//update

   }); //sortable
});//jquery

2 个回复
SO网友:Enrique René

我也是jQuery AJAX的初学者,我总是尝试使用$。ajax,但我只使用$。现在就把请购单寄到我的邮箱里,它们工作得很好。语法更简单,出错风险更小。

很明显,如果我这样错了,请有人提醒我。

单位:美元。post()您需要放置url,变量将通过post作为对象和处理函数(数据、状态)获取。就这样吧。

在PHP代码中,我只是回显我想返回到页面的内容,我已经收到过一两次enconde问题,我在JS中解决了enconde问题,而不是在PHP中。

有时,我从PHP echo返回数字,并使用JS中的switch语句根据返回的数字来生成所需的内容,这也解决了一些问题。

我知道我没有解决你的问题,相反,我正在尝试其他方法,但如果有帮助,请告诉我

SO网友:sandrodz

始终退出ajax操作wp_die:

add_action( \'wp_ajax_foobar\', \'my_ajax_foobar_handler\' );

function my_ajax_foobar_handler() {
    // Make your response and echo it.

    // Don\'t forget to stop execution afterward.
    wp_die();
}
_update_post_ter_count 在您粘贴的代码段中不可见,因此我无法对此进行帮助。