首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AJAX处理程序抛出400 (糟糕的请求)-为什么?

AJAX处理程序抛出400 (糟糕的请求)-为什么?
EN

WordPress Development用户
提问于 2018-04-30 19:09:45
回答 1查看 5K关注 0票数 4

我试图在post循环中应用一个“”函数,但是当提到admin-ajax.php时,我正在处理一个400坏的请求。

我使用的引用是- https://rudrastyh.com/wordpress/load-more-posts-ajax.html

以下函数(在functions.php中)将查询参数传递给javascript:

代码语言:javascript
复制
function wordpress_my_load_more_scripts() 
{
    global $wp_query; 

    wp_enqueue_script('jquery');

    wp_register_script( 'my_loadmore', get_stylesheet_directory_uri() . '/myloadmore.js', array('jquery') );

    wp_localize_script( 'my_loadmore', 'wordpress_loadmore_params', array(
        'ajaxurl' => admin_url() . 'admin-ajax.php', 
        'posts' => json_encode( $wp_query->query_vars ), 
        'current_page' => get_query_var( 'paged' ) ? get_query_var('paged') : 1,
        'max_page' => $wp_query->max_num_pages
    ) );

    wp_enqueue_script( 'my_loadmore' );
}

add_action( 'wp_enqueue_scripts', 'wordpress_my_load_more_scripts' );

参数传递给以下名为“jQuery”的myloadmore.js脚本:

代码语言:javascript
复制
jQuery(function($){
    $('.wordpress_loadmore').click(function()
    { 
        var button = $(this),
            data = {
            'action': 'loadmore',
            'query': wordpress_loadmore_params.posts, 
            'page' : wordpress_loadmore_params.current_page
        };

        console.log(wordpress_loadmore_params.ajaxurl);

        $.ajax({
            url : wordpress_loadmore_params.ajaxurl, // AJAX handler
            data : data,
            type : 'POST',
            beforeSend : function ( xhr ) 
            {
                button.text('Loading...'); 
            },
            success : function( data ){
                if( data ) { 
                    button.text( 'More posts' ).prev().before(data); 
                    wordpress_loadmore_params.current_page++;

                    if ( wordpress_loadmore_params.current_page == wordpress_loadmore_params.max_page ) 
                        button.remove(); // if last page, remove the button

                } else {
                    button.remove(); // if no data, remove the button as well
                }
            }
        });
    });
});

functions.php内部的以下函数将在while循环中提供另外三个帖子:

代码语言:javascript
复制
function wordpress_loadmore_ajax_handler()
    {
        $args = json_decode( stripslashes( $_POST['query'] ), true );
        $args['paged'] = $_POST['page'] + 1; 
        $args['post_status'] = 'publish';

        query_posts( $args );

        if(have_posts() ) :

            echo "We have post(s)!";

            while( have_posts() ): the_post();

                echo "A post!";

            endwhile;

        endif;

        die; 
    } 

    add_action('wp_ajax_loadmore', 'wordpress_loadmore_ajax_handler'); 
    add_action('wp_ajax_nopriv_loadmore', 'wordpress_loadmore_ajax_handler'); 

post循环如下:

代码语言:javascript
复制
                     'post',
                            'posts_per_page' => 3
                    );

                    $wp_query = new WP_Query( $query_params);        

                    if( $wp_query->have_posts() ) :

                        while ($wp_query->have_posts()) : $wp_query->the_post(); ?>

                            
                                
                                    
                                        
                                    
                                
                                
                                
                            

                        

                    

                

                
                    max_num_pages > 1 )
                        echo '
                            
                                More posts
                            '; // you can use  as well
                    ?>

单击按钮加载更多的帖子将产生以下消息:

代码语言:javascript
复制
https://www.uvjagtpro.dk/wp-admin/admin-ajax.php
jquery.js?ver=1.12.4:4 POST https://www.uvjagtpro.dk/wp-admin/admin-ajax.php 400 ()
send @ jquery.js?ver=1.12.4:4
ajax @ jquery.js?ver=1.12.4:4
(anonymous) @ myloadmore.js:13
dispatch @ jquery.js?ver=1.12.4:3
r.handle @ jquery.js?ver=1.12.4:3

为什么我不能解析名为"wordpress_loadmore_params.ajaxurl“的数组中的变量,而不会导致400个错误的请求?

链接到页面在这里- https://www.uvjagtpro.dk/arkiv/

EN

回答 1

WordPress Development用户

发布于 2018-05-07 17:11:31

在html中添加

代码语言:javascript
复制
 `` 

这里"value“是您的"action_name”。您的ajax调用是incorect的。数据应该是

代码语言:javascript
复制
url: "your php action script"
data: $(html data).serialize(),

关于ajax,首先尝试在没有wordpress的情况下在计算机上创建ajax。当您了解ajax如何工作时,可以在Wordpress上试用。

票数 0
EN
页面原文内容由WordPress Development提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://wordpress.stackexchange.com/questions/302332

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档