2012-03-29 104 views
1

我使用php與mysql數據庫交談,然後用json_encode編碼關聯數組。我知道的很多工作,我可以直接調用php並查看json結果。jQuery Json + jQuery onChange

使用jQuery我在下拉菜單上使用onChange來調用php函數並獲取結果。

我認爲我有jQuery和json的問題,但我已經瀏覽了多個帖子,找不到一個好的答案。

這是我使用的代碼。我如何到達json數組?我已經嘗試過數據['ele'],data.ele,data [0],所有的返回值都是未定義的。

$('#itemDD').change(function(data){ 
     alert("Changing"); 
     askServer(function(data){ 
     alert("!" + data['retailListPrice']); 
     //spin through the data and put the results in workingQuote 
     }); 
    }); 

function askServer(callback) 
{ 
    var selItem = $('#itemDD').val(); 
    var strUrl = "getItemList.php?item=" + selItem + "&action=itemInfo"; 
    alert(strUrl); 
    jQuery.ajax({ 
     url:strUrl, 
     success:callback, 
     dataType: "json" 
    }); 
} 

}); 

PHP

$sql="SELECT * 
       FROM items 
       WHERE modelNum='" . $selectedModel . "'"; 
     $result = mysql_query($sql,$conn) or die("Error" . mysql_error()); 

     while(($resultArray[] = mysql_fetch_assoc($result)) || array_pop($resultArray)); 
     echo json_encode($resultArray); 
+0

確保您提供的網址OK,儘量絕對URL,如「http://example.com /getItemList.php?item=「+ selItem +」&動作= itemInfo「與」http://「 – 2012-03-29 02:40:59

+0

我給了它完整的網址,而且什麼也沒有。我正在更新與PHP。 – 2012-03-29 02:46:37

回答

1

您使用數組和mysql_fetch_assoc。因此,要獲得的數據,使用數據[0] [ 'rowName']數據[0] .rowName

1

試試這個(注:對象/數組格式是不同勢在JS):

function askServer() 
{ 
    var selItem = $('#itemDD').val(); 
    var strUrl = "getItemList.php?item=" + selItem + "&action=itemInfo"; 
    alert(strUrl); 
    $.get(strUrl, function(data){ 
     alert(data.retailListPrice); 
    }); 
} 
+0

我仍然未定義。我將askServer函數中的代碼放入#itemdd – 2012-03-29 02:38:37

+0

的更改函數中,發佈您的json字符串。 (你是否在php端設置了json頭文件..不是必須的,但有時候會有幫助) – Rufinus 2012-03-29 02:51:44

+0

如果你使用螢火蟲或其他控制檯感知的開發者工具,你也可以嘗試'console.dir(data)' – Rufinus 2012-03-29 02:52:40

1

內改變事件只是調用askServer()功能,並宣佈它的外變更事件,如

$('#itemDD').change(function(data){ 
    //... 
    askServer(); 
}); 

和你askServer()功能

function askServer() 
{ 
     var selItem = $('#itemDD').val(); 
     var strUrl = "getItemList.php?item=" + selItem + "&action=itemInfo"; 
     $.get(strUrl, function(data){ 
      $.parseJSON(data); 
      alert(data.retailListPrice); 
     }); 
}