我在WordPress中有一个表单过滤器。
我试图在没有数据但无法提供信息时发布消息:
$.ajax({
url : ajax_url,
data : data,
success : function(response) {
mafs.find("#ajax_fitler_search_results").empty();
if(response) {
for(var i = 0 ; i < response.length ; i++) {
var img = null;
if(response[i].statut == 'encours') {
img = '//localhost:3000/app/themes/sofico2018/dist/images/icon-encours.svg'
}
var html = "<li class='cList__item'>";
html += " <img width='18' height='21' src='" + img + "' />";
html += "<p class='cList__chantier'>" + response[i].title + "</p>"
html += " <p>Province: " + response[i].province + "</p>";
html += "</li>";
mafs.find("#ajax_fitler_search_results").append(html);
}
} else {
alert('error');
var html = "<li class='no-result'>No matching movies found. Try a different filter or search keyword</li>";
mafs.find("#ajax_fitler_search_results").append(html);
}
}
});
});
当我没有匹配的数据时,我得到的答案是200但为空。
我的PHP代码:
if ( $search_query->have_posts() ) {
$result = array();
while ( $search_query->have_posts() ) {
$search_query->the_post();
$cats = strip_tags( get_the_category_list(", ") );
$result[] = array(
"id" => get_the_ID(),
"title" => get_the_title(),
"statut" => get_field('statut'),
"province" => $cats
);
}
wp_reset_query();
echo json_encode($result);
} else {
// no posts found
}
我不知道为什么在提交验证时没有得到答案200,但没有结果。问题可能来自于?
非常感谢您的帮助!
答案 0 :(得分:2)
如果您期望使用JSON对象,请设置contentType,并请求标题,如下所述。
,您可以尝试jQuery.isEmptyObject(response)来验证对象是否为空。
$.ajax({
url: url,
dataType: 'json',
type: method type,
data : data,
contentType: "application/json",
beforeSend: function (e) {
e.setRequestHeader('Accept', 'application/json; charset=utf-8')
},
success: function (response) {
if(!jQuery.isEmptyObject(response)){
//logic
}else{
//No object recived from backend
}
},
error: function () {
console.log ("Failed!");
}
});
答案 1 :(得分:0)
在ajax请求的同时发送“ dataType”来尝试。 试试这个-> dataType:'json',
$.ajax({
url : ajax_url,
data : data,
dataType: 'json',
success : function(response) {
}
});