Я использую json-синтаксический анализ с использованием jquery. Я хочу поднять сообщение, если в массиве json нет данных. Поэтому я использовал код ниже и получил условие true, но в html div не было добавлено никакого сообщения.
мой код:
$( "#refresh" ).click(function() {
$.getJSON("http://ec2-72-44-51-113.compute-1.amazonaws.com:8001/get_latest_verification", function(obj){
if(json.length==0){
$('<p>no updates found</p>').appendTo('#rr');
}
});
});
Кто-нибудь может меня исправить.
Что вы сомневаетесь? Просто проверьте, какой запрос закончен, а json пуст или запрос не выполнен (используйте шаблон обещания):
var url = "http://ec2-72-44-51-113.compute-1.amazonaws.com:8001/get_latest_verification";
$( "#refresh" ).click(function() {
$.getJSON(url).done(function (json) {
if(!json || json.length === 0){
$('<p>no updates found</p>').appendTo('#rr');
}
}).fail(function () {
$('<p>no updates found</p>').appendTo('#rr');
});
});
У вас небольшая ошибка:
Вы должны проверить, является if(obj.length==0)
И не так, как ты.
Зачем?
потому что это аргумент вашего обратного вызова, который объявляется как:
function(obj){...}
уведомление:
Я, конечно же, надеюсь, что у вас есть cors enable на сервере, потому что вы запускаете свой код:
* XMLHttpRequest не может загрузить http://ec2-72-44-51-113.compute-1.amazonaws.com:8001/get_latest_verification. Происхождение http://run.jsbin.com не разрешено Access-Control-Allow-Origin. *
И я не вижу, чтобы какой-либо разрешить заголовок -domain в ответе:
Accept:application/json, text/javascript, */*; q=0.01
Cache-Control:no-cache
Origin:http://run.jsbin.com
Pragma:no-cache
User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.101 Safari/537.36
Вы можете попробовать это тоже,
if($.isEmptyObject(obj)) { //do you work here }
Документация: isEmptyObject
Можешь попробовать
$.isEmptyObject(obj)
вместо json.length == 0
Это будет работать как для пустых массивов, так и для пустых объектов
См. Страницу документации здесь.
if(obj.length==0){
...