**已进行了更详细的编辑,谢谢您到目前为止的帮助
我正在尝试在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
答案 0 :(得分:0)
您的响应应采用数组,对象或json格式,以便在for循环中看到它。在php文件中,当您返回值时,请确保已使用这3种类型中的1种返回了该值。