在下面的示例中,我能够传递国家/地区列表的JSON表示并显示它,但我无法显示消息"找不到任何国家"。您能否查看下面的代码:
控制器:
if ($this->model_abc->did_get_country_list($user_id)) {
$country["results"]= $this->model_abc->did_get_country_list($user_id);
echo json_encode($country);
}
else {
$country = array('message' => "Could not find any countries" );
echo json_encode($country);
}
JS档案:
$.post('cont/get_country_list', function (country) {
$.each(country.results, function(i, res) {
var item = $('<div>'),
title = $('<h3>');
title.text(res);
item.append(title);
item.appendTo($("#country_list_is_got"));
});
},
"json").error(function() {
$( "#country_list_is_not_got").text(country.message);
});
更新
我将代码更改为以下内容,现在我从控制台收到错误:未捕获的TypeError:无法读取属性&#39; length&#39;未定义。
JS档案:
$.post('cont/get_country_list', function (country) {
if (country.message !== undefined) {
$( "#country_list_is_not_got").text(country.message);
} else {
$.each(country.results, function(i, res) {
var item = $('<div>'),
title = $('<h3>');
title.text(res);
item.append(title);
item.appendTo($("#country_list_is_got"));
});
}
});
答案 0 :(得分:1)
仅当服务器使用500-HTTP代码(或404,403或超时等)响应时才会调用错误函数。您只返回具有正常HTTP状态代码的有效JSON,因此调用success-function。在该成功函数中,您应该检查是否有消息:
$.post('cont/get_country_list', function (data) {
if (data.message !== undefined) {
$( "#country_list_is_not_got").text(data.message);
} else {
$.each(country.results, function(i, res) {
var item = $('<div>'),
title = $('<h3>');
title.text(res);
item.append(title);
item.appendTo($("#country_list_is_got"));
});
}
});
答案 1 :(得分:0)
在没有找到国家/地区的情况下,您没有设置错误回复代码,因此jQuery不会将其视为错误。
else {
header("HTTP/1.1 500 Error");
$country = array('message' => "Could not find any countries" );
echo json_encode($country);
}
此外,您的错误函数需要从其参数中获取数据:
.error(function(xhr) {
country = $.parseJSON(xhr.responseText);
$( "#country_list_is_not_got").text(country.message);
});