[英]jQuery JSON drop down not populating
我正在嘗試使用jQuery,PHP和mySQL創建一個下拉列表,到目前為止,這是我的代碼,
HTML:
<select id="box"></select><br />
<input id="button" type="button" value="populate" />
使用Javascript / jQuery的:
$(document).ready(function() {
$("#button").click(function (){
$.getJSON("test_post.php", function(data){
$.each(data, function(user) {
$('#box').append(
$('<option></option>').html(user)
);
});
});
});
});
PHP:
mysql_connect('localhost', 'user', '1234');
mysql_select_db('json');
$test = mysql_query('SELECT user,pass FROM login WHERE user="john"');
while($row = mysql_fetch_array($test, true)) {
$data .= json_encode($row);
};
echo $data;
我在數據庫中有3個條目,當我運行“ test_post.php”文件時,它會回顯JSON,但是當我嘗試獲取它以填充下拉列表時,什么都沒有發生!
知道為什么嗎?
嘗試從while循環中取出json_encode
並在最后對其進行編碼。 像這樣:
while($row = mysql_fetch_array($test, true))
{
$data[] = $row;
}
$data = json_encode($data);
echo $data;
[編輯]:OP評論后:
如果您只想在下拉列表中輸入用戶名,則可以這樣操作:
while($row = mysql_fetch_assoc($test))
{
$data[$row['user']] = $row;
}
$data = json_encode($data);
echo $data;
您的代碼中有幾個問題。
首先:嘗試使用未定義的變量$data
,您應該在while
循環之前將其初始化為空字符串: $data = '';
,否則這可以通過JSON響應發送PHP通知,具體取決於display_errors
和error_reporting
設置的值。
第二:正如@shamittomar所說, $data
必須是一個數組,並且json_encode()
對於整個數組只能被調用一次。 目前,您正在發送多個串聯到單個字符串的JSON對象,這是錯誤的。
第三: JavaScript中的user
function參數的值實際上是data
數組的索引 ,而不是值 ,但是即使user
是值,也將是具有user
和pass
屬性的JavaScript 對象 ,而不是string 。
結果代碼應為(僅更改部分):
PHP
$data = array();
while ($row = mysql_fetch_array($test, true)) {
$data[] = $row;
};
echo json_encode($data);
JavaScript的
$.each(data, function(i, user) {
$('#box').append(
$('<option></option>').html(user.user)
);
});
首先檢查mysql的連接代碼可以嗎?
mysql_connect('localhost', 'user', '1234');
更新了如下的php代碼,
mysql_connect('localhost', 'user', '1234');
mysql_select_db('json');
$test = mysql_query('SELECT user,pass FROM login WHERE user="john"');
while($row = mysql_fetch_array($test, true)) {
$data['pass '] = $row['pass'];
$data['user'] = $row['user'];
};
echo json_encode($data); die();
JavaScript代碼:
$("#button").click(function (){
$.getJSON('getDropdownData.php', '',function(data){
$("#box").remove();
$('<option />', {value: '', text: 'Select option'}).appendTo("#box");
$.each(data,function(key, value){
$('<option />', {value: key, text: value}).appendTo("#box");
});
});
});
然后,您將獲得一個dorpdown,其pass作為“ option value”,用戶作為“ option text”。
您是否嘗試過驗證JSON? jQuery對JSON非常挑剔:它需要正確驗證,沒有注釋和正確的內容類型! 嘗試在PHP中添加以下內容以查看是否有幫助(我總是這樣做)
header('Content-type: application/json');
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.