WordPress AJAX调用插入数据,但成功响应为假

时间:2021-09-02 作者:Key

我试图通过Ajax调用将数据发布到自定义表中,效果很好(在MySQL自定义表中插入了行),但在console.log.

这是我的密码。

PHP

function create_link() {
    global $wpdb;

    if ( check_ajax_referer( \'create_link\', \'nonce\', false ) == false ) {
        wp_send_json_error();
    }

    $table_name = $wpdb->prefix . "custom_table";

    $result = $wpdb->insert( 
        $table_name, 
        array( 
            \'icon\' => sanitize_text_field($_POST[\'icon\']), 
            \'text\' => sanitize_text_field($_POST[\'text\']), 
        )
    );

    if ( $result == false ) {
        wp_send_json_success( \'Link has been created\' );
    } else {
        wp_send_json_error();
    }

    wp_die();

}

add_action( \'wp_ajax_create_link\', \'create_link\' );
Javascript

( function( $ ) {

    $( document ).ready( function() {

        $( \'.ufb-create\' ).on( \'click\', \'.ufb-btn\', function( event ) {

            var $button = $( this );

            $button.prop(\'disabled\', true);

            var data = {
                \'action\' : \'create_link\',
                \'nonce\'  : $button.data(\'nonce\'),
                \'icon\' : $(\'.icon-input\').val(),
                \'text\' : $(\'.text-input\').val()
            };
        
            $.post(ajaxurl, data )
            .done( function (response) {

                console.log( response );

                if ( response.success == true ) {
                    // display success message
                    $(\'.ufb-create-response\').html( response.data );

                } else {

                    // display error message
                    $( \'.ufb-create-response\' ).html("Something went wrong");
            
                }
                
                // enable button
                $button.prop(\'disabled\', false);
            
            })
            .fail( function(error) {
                console.log(error)
            });
            
        
        } );        

    });

})( jQuery );
控制台。日志(成功)

{ "success": false }
请帮忙。

1 个回复
最合适的回答,由SO网友:Jacob Peattie 整理而成

最后看看你的情况:

if ( $result == false ) {
    wp_send_json_success( \'Link has been created\' );
} else {
    wp_send_json_error();
}
wpdb::insert() 退货false 当出现错误时,因此只有在出现错误时才返回成功响应。你需要交换一下这句话。

if ( $result == false ) {
    wp_send_json_error();
} else {
    wp_send_json_success( \'Link has been created\' );
}

相关推荐

WordPress摘录-如何使用unctions.php删除第一个链接

我刚刚将一个博客导入Wordpress,所有内容都以以下内容开头:<a href="itunes.com">Listen on iTunes</a> 然后是段落内容,因此所有节选都显示为“;收听iTunes内容摘录"E;我尝试了这里的一些自定义函数,但似乎没有一个能起到作用。在不必移动iTunes链接的情况下删除Listen on iTunes文本的最佳方法是什么?例如,我试过这个。。。没有运气。。。 function custom_ex