2013-12-08 3 views
1

Некоторые странные вещи происходит:если-другое заявление неопределенный объект

JSON:

{ 
    "all": { 
     "id": [ 
      "64", 
      "65" 
     ], 
     "code": [ 
      "AqCeTZ3Q", 
      "CTRtldIw" 
     ], 
     "file_match": [ 
      "voorbeeld.php", 
      "Handeler.rar" 
     ], 
     "file_size": [ 
      "30", 
      "146693" 
     ], 
     "expire": [ 
      "1386543600", 
      "1386543600" 
     ], 
     "ip": [ 
      "dada", 
      "" 
     ], 
     "can_used": [ 
      "0", 
      "1" 
     ], 
     "opmerking": [ 
      "", 
      "" 
     ] 
    }, 
    "id": [ 
     "65" 
    ], 
    "active": { 
     "code": [ 
      "CTRtldIw" 
     ], 
     "file_match": [ 
      "Handeler.rar" 
     ], 
     "file_size": [ 
      "146693" 
     ], 
     "expire": [ 
      "1386543600" 
     ], 
     "ip": [ 
      "" 
     ], 
     "can_used": [ 
      "1" 
     ], 
     "opmerking": [ 
      "" 
     ] 
    }, 
    "expired": { 
     "id": [ 
      "64" 
     ], 
     "code": [ 
      "AqCeTZ3Q" 
     ], 
     "file_match": [ 
      "voorbeeld.php" 
     ], 
     "file_size": [ 
      "30" 
     ], 
     "expire": [ 
      "1386543600" 
     ], 
     "ip": [ 
      "dada" 
     ], 
     "can_used": [ 
      "0" 
     ], 
     "opmerking": [ 
      "" 
     ] 
    } 
} 

Сценарий 1 (работы):

function update() { 
    var value = document.getElementById("chooser").value; 
    $.ajax({ 
    url: "./json.php", 
    dataType: 'json', 
    success: function(data, value) { 

       alert(data.all.id); 

      } 
     }); 
    } 

Выход: предупреждение со значением: 64, 65. Верный!

Сценарий 2: (работает не так, я не знаю, почему.)

function update() { 
    var value = document.getElementById("chooser").value; 
    $.ajax({ 
    url: "./json.php", 
    dataType: 'json', 
    success: function(data, value) { 
      if(value == all) { 
       alert(data.all.id); 
      } else if (value == active) { 
       alert(data.active.id); 
      } else { // expired 
       alert(data.expired.id); 
       } 
      } 
     }); 
    } 

Ошибка: Uncaught ReferenceError: все не определено. (когда значение == все)

Итак, я понятия не имею, почему скрипт сломан, когда я добавляю инструкцию. Кто-нибудь знает, почему это не работает и как его исправить?

+0

необходимо использовать консоль браузера, чтобы просмотреть ошибки, сброшенные .... 'all' и' active' не определены, и эти ошибки будут отображаться в консоли – charlietfl

ответ

0

Если вы хотите использовать значение, полученное до ajax в обработчике ajax, у вас не должно быть никаких других переменных с тем же именем в своей области, чтобы переопределить его, т. Е. Удалить параметр value из обработчика успеха.

function update() { 
    var value = document.getElementById("chooser").value; 
    $.ajax({ 
    url: "./json.php", 
    dataType: 'json', 
    success: function(data) { 
      if(value == "all") { 
       alert(data.all.id); 
      } else if (value == "active") { 
       alert(data.active.id); 
      } else { // else expired 
       alert(data.expired.id); 
       } 
      } 
    }); 
} 
0

на основе вашего json. «все» можно ссылаться только на «data.all», иначе скрипт обрабатывает его как переменную, которая не объявлена.

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