更多的幫助,我還在努力讓使用JSON的PHP和jQuery的把握。使用JSON
我有查詢數據庫得到誰擁有即將到來的生日所有用戶頁面(忽略SQL,它只是在這個例子中)的代碼抓住數據庫返回,並把它變成一個數組,這看起來是這樣的:
Array (
[idnum] => Array (
[0] => 3
[1] => 10
[2] => 74
)
[name] => Array (
[0] => Betty Smith
[1] => Jim Pierce
[2] => Sam Smith
)
)
我想把這個數據到一些jQuery來顯示在一個HTML select語句或類似的用戶,以便他們可以作出選擇,然後保留以備將來代碼/ AJAX的IDNUM。
我的代碼如下,在其整體:
<?php
session_start();
$sql_server = 'xxxx';
$sql_db = 'xxxx';
$sql_username = 'xxxx';
$sql_password = 'xxxx';
$db = mysql_connect("$sql_server", "$sql_username", "$sql_password") or die ("Error connecting to database.");
mysql_select_db("$sql_db", $db) or die ("Couldn't select the database.");
list($currentdate) = mysql_fetch_row(mysql_query("SELECT currentdate FROM calendar",$db));
/////////////////////////
$result = mysql_query("SELECT IDvalue, name FROM people where birthday => $currentdate",$db);
$rowcheck = mysql_num_rows($result);
//echo $rowcheck;
$birthdays = array();
$i = '0';
while ($row = mysql_fetch_assoc($result)){
foreach ($row as $col => $val){
if ($col == 'IDvalue') {
//print " $val ";
$birthdays['idnum'][$i] = $val;
}
if ($col == 'name') {
$birthdays['name'][$i] = $val;
}
}
$i++;
}
echo "</br></br><input type=\"button\" id=\"showbirthdays\" value=\"Show birthdays\"/>";
?>
<html>
<head>
</head>
<body>
<script src="jquery.js" type ="text/javascript"></script>
<script>
$('#showbirthdays').click(function() {
var jsonobj = <?php echo json_encode($birthdays); ?>;
//alert (jsonobj) // this does not seem to work. just gives [object Object]
// Here's where i'm really lost. I would like to use jquery to display
// a select box that shows the name of birthday people, and uses their IDnum as an identifer for further code.
// some kind of foreach with an html.push, and then append to a div on the page...?
});
</script>
</body>
</html>
}
?>
我非常希望看到究竟是如何搶了jQuery內的陣列中的數據,並使用它。或者,如果有人對移動數據有不同的建議,我對替代方案感興趣。
編輯:
$.each(jsonobj, function(){
//Here `this` will point to each element of the object
alert (this);
});
偉大的作品,給我這樣的輸出: 「貝蒂·史密斯,吉姆·皮爾斯,薩姆·史密斯」。
$.each(jsonobj.name, function(){
這也適用,並且給了我與名獨立的輸出,
這裏的我在尋找什麼:
var html = [];
html.push('<select name="birthdaynames" id="birthdayselect">')
$.each(jsonobj, function(){
html.push('<option name="asdf" id="this.IDnum">' + this.name + '</option>')
});
html.push('</select>')
$('#showbirthdays').append(html.join(''));
我如何使用這些特定值(此)?
不是一個答案,但一個提示:使用引號的變量(例如「$ var」)被認爲是非常糟糕的風格。 – str
jsonobj是一個實際的js對象,所以警報是正確的。試試'alert(jsonobj.name [0])',你會看到第一個名字 – Einacio
@jeremy:當你做'$ .each(jsonobj,function(){','this'是每個數組(idnum,then名字),你需要做的是在每個數組上面加上'$ .each'。查看我的答案舉例。 –