データベースにいくつかの値を照会し、それらをjson文字列に入れるphpスクリプトがあります。
<?php
if (isset($_POST['name']) === true && empty($_POST['name']) === false) {
include_once("../php_scripts/connect.php");
$arr = array();
if ($result = $mysqli->query("SELECT due_date FROM payment_due_dates WHERE client_id = '" . $_POST['name']. "'")) {
$rowCount = $result->num_rows;
echo '[';
$i = 0;
while ($row = $result->fetch_assoc()) {
if ($i <= $rowCount - 2){
echo json_encode($row);
echo ',';
}else{
echo json_encode($row);
}
$i++;
}
$result->free();
}
echo ']';
}
?>
次に、jquery は json オブジェクトに変換し、値を選択ボックスに追加します。
$(document).ready(function(){
$('#subName').click(function(){
var name = $('input#txtName').val();
if($.trim(name) != ''){
$.post('ajax/load_patient_episodes.php', {name: name}, function(data){
console.log(data);
var obj = $.parseJSON(data);
console.log(obj);
var output;
$.each(obj, function(key, val){
output += '<option>' + val.due_date + '</option>';
});
$('#selEpisode2').html("<option>" + output + "</option>");
});
}
});
});
値をロードしますが、コンソール ログにも次のエラーが表示されます。
event.returnValue is deprecated. Please use the standard event.preventDefault()
instead. jquery.js:5
そして、値を選択ボックスに追加すると、「未定義」というテキストも追加されます。したがって、選択ボックスのオプションは次のように表示されます。
未定義
2013-11-13
2013-11-13
2013-11-13
そこにあるproto配列と関係があるかもしれないと思いますが、どうやってそこにたどり着いたのかわかりません。このことについてはまだ初心者です。これが私のコンソールログです。「選択オプションで未定義」を失う方法はありますか? また、PHPクエリから選択オプションをロードするためのより良い方法はありますか?
event.returnValue is deprecated. Please use the standard event.preventDefault()
instead. jquery.js:5
[Object, Object, Object]
0: Object
1: Object
2: Object
length: 3
__proto__: Array[0]