Wordpress AJAX调用返回未定义

时间:2019-02-22 11:33:01

标签: jquery ajax wordpress

**已进行了更详细的编辑,谢谢您到目前为止的帮助

我正在尝试在Wordpress网站上创建AJAX搜索,以按类型,位置和状态过滤属性。

我是AJAX的新手,并且一直在遵循一些指南来到达我现在的位置,但是停留在最后一部分。似乎一切正常,但是当我使用for循环遍历AJAX调用时,它将返回undefined

JS文件中的代码

$ = jQuery;

var bedSearch = $("#prop-search");

var searchForm = bedSearch.find("form");

searchForm.submit(function(e){
    e.preventDefault();

    var data = {
        action : "prop_search",
        status : bedSearch.find("#status").val(),
        location_of_accom : bedSearch.find("#location").val(),
        propertytype : bedSearch.find("#property_type").val()
    };

    $.ajax({
        url : ajax_url,
        data : data,
        success : function(response) {


            bedSearch.find("ul").empty();

            for(var i = 0; i < response.length ; i++) {
                console.log(response[i]);
            }

        }
    });

});

AJAX回调的代码(在functions.php中):

// create ajax callback

add_action ('wp_ajax_prop_search', 'bed_search_callback');
add_action ('wp_ajax_nopriv_bed_search', 'bed_search_callback');

function bed_search_callback() {

    $status1=0;
    if(isset($_GET['status'])) $status = $_GET["status"];

    $location_of_accom = 0;
    if(isset($_GET['location_of_accom'])) $location_of_accom = $_GET["location_of_accom"];

    $propertytype = 0;
    if(isset($_GET['propertytype'])) $propertytype = $_GET["propertytype"];

    $result = array();

    $args = array(
        "post_type" => "accomodation",
        "posts_per_page" => -1
    );



    $args['meta_query'][] = array (
        'key' => 'status',
        'value' => $status,
        'compare' => "LIKE"
    );

    $args['meta_query'][] = array (
        'key' => 'location_of_accom',
        'value' => $location_of_accom,
        'compare' => "LIKE"
    );

    $args['meta_query'][] = array (
        'key' => 'propertytype',
        'value' => $propertytype,
        'compare' => "LIKE"
     );





     $bed_query = new WP_Query( $args );

    while ($bed_query->have_posts() ) {

        $bed_query->the_post();

        $result[] = array(
            "id" => get_the_ID(),
            "title" => get_the_title(),
            "permalink" => get_the_permalink()
        );


}


        echo json_encode($result);

        wp_die();  
}

供参考:我一直在遵循本指南,除了最后一步(我无法像他所显示的那样将其打印出来)之外,所有指南都在工作。我的一次打印出一个字符:

https://www.youtube.com/watch?v=Ol8aBPmjdmA

我的输出:Screenshot of output

1 个答案:

答案 0 :(得分:0)

您的响应应采用数组,对象或json格式,以便在for循环中看到它。在php文件中,当您返回值时,请确保已使用这3种类型中的1种返回了该值。