2013-12-08 33 views
1

一些奇怪的東西正在發生的事情:if-else語句未定義的對象

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); 
       } 
      } 
     }); 
    } 

錯誤:未捕獲的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。 'all'只能通過'data.all'來引用,否則腳本會將其視爲一個未聲明的變量。