2010-02-14 2 views
1

Это в настоящее время то, что у меня есть, если время запроса отсутствует, сообщение не возвращается.определяют состояние подачи Json и достоверность данных с помощью JQuery

$.getJSON(jsonUrl, function(data){ 
     /*here*/ 
     if (data.stat != "ok") { //checks if query was valid 
      $('#content').html('content not available'); 
      return; 
     } 
     else {...Do Code...} 
}); 

Мой вопрос, могу ли я (и как) попросить Jquery повторить до более 2 раза, если подача Json не возвращается, а если сырье возвращается как я проверить, если сам JSON данные не ошибочно и в правильном синтаксисе json.

В конце концов все после /*here*/ выполнить сразу после возвращается вся фида?

ответ

1

Согласно documentation, $.getJSON будет обычно не беззвучно, если неверный формат JSON возвращается:

Если есть ошибка синтаксиса в файле JSON , запрос, как правило, не в состоянии молча. По этой причине избегайте частого редактирования вручную данных JSON.

Что касается повтором запрос еще два раза, следующий должен сделать это:

function getJson() { 
    var json = (function() { 
     var json = null; 
     $.ajax({ 
      'type': 'GET', 
      'async': false, 
      'global': false, 
      'url': '/some/url', 
      'dataType': "json", 
      'success': function (data) { 
       json = data; 
      } 
     }); 
     return json; 
    })(); 
    return json; 
} 

var json = getJson(); 
if(json.stat != "ok") { 
    for(var i = 0; i < 2; i++) { 
     json = getJson(); 
     if(json.stat == "ok") { 
      break; 
     } 
    } 
} 

if(json.stat != "ok") { 
    $('#content').html('content not available'); 
} else { 
    // do stuff with json 
} 

И да, все после того, как /*here*/ выполняется, как только сервер возвращает что-то.

+0

большое спасибо Karim79! Я также смотрю на этот http://plugins.jquery.com/project/JSONSchemaValidator, который, похоже, сам проверяет саму json-схему:) – Mohammad

Смежные вопросы