簡體   English   中英

jQuery JSON下拉列表不填充

[英]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_errorserror_reporting設置的值。

第二:正如@shamittomar所說, $data必須是一個數組,並且json_encode()對於整個數組只能被調用一次。 目前,您正在發送多個串聯到單個字符串的JSON對象,這是錯誤的。

第三: JavaScript中的user function參數的值實際上是data數組的索引 ,而不是 ,但是即使user是值,也將是具有userpass屬性的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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM