2012-09-19 28 views
0

我想在创建页面时填充选定的菜单,但没有显示的选项。jquerymobile selectmenu not populating

$(document).ready(function() { 
$.ajax('patientlist.php', function(data){ 
    var html = ''; 
    var len = data.length; 
    for (var i = 0; i< len; i++) { 
     html += '<option value="' + data[i].patient_id + '">' + data[i].patient_firstname + data[i].patient_lastname + '</option>';} 
    $('#patientselect').append(html); 
}); 

});

我patientlist.php

$result = mysql_query("SELECT `patient_id`, `patient_firstname`, `patient_lastname` FROM `patients` WHERE `company_id` = " . $user_data['company_id'] . " ORDER BY `patient_firstname`"); 

而($行= mysql_fetch_assoc($结果)){

$data[] = $row; 

echo json_encode($data); 

} 我从PHP页面

[{“patient_id结果“:”9“,”patient_firstname“:”Adam“,”patient_lastname“:”Steve“}]等...

真的很感谢任何帮助,一直坚持这一个星期!

回答

1

所以,再次发帖。

首先,你应该把echo json_encode($data);出while循环

while($row = mysql_fetch_assoc($result)) { 
    $data[] = $row; 
} 
echo json_encode($data); 

其次,你的$ajax语法不正确,将其更改为$.post,告诉$.post要求你期待一个'json'响应从patientlist.php

$(document).ready(function() { 
    $.post('patientlist.php', {}, function(data){ 
    /* code */ 
    }, 'json'); // <= set data type json here 
}); 

当检索有效json字符串,可以遍历data b y使用$.each方法

$.each(data, function(index, patient) { 
    console.log(patient.patient_id); // or use patient['patient_id'] 
}); 

至少您现在将收到一个有效的请求。

关注你的HTML,不使用.append,如果它不是一个DOM元素,你只是建立HTML元素作为一个字符串,因此改为使用

$('#patientselect').html(html); 
+0

还没填充。 – Adam

+0

即时通讯使用Dreamweaver CS5,如果这有所作为。 – Adam

+0

@Adam更新了帖子,对不起,我的第二次编辑后,所有内容都被加扰了。 – dbf