1

データベースにいくつかの値を照会し、それらを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]
4

3 に答える 3

0

変数出力を空白値で初期化する

var output= "";
于 2013-11-14T15:45:53.800 に答える
0

これを試して

var output = '';
$.each(obj, function(key, val){
  if (typeof (val.due_date) != undefined) { 
    output += '<option>' + val.due_date + '</option>';
  }
});

UNIQUE due_date を選択することもできます。

于 2013-11-14T15:44:20.603 に答える
0

あなたのjqueryバージョンは古いので、最新のjqueryバージョンをダウンロードしてファイルに含めてください。

ダウンロード: http://jquery.com/download/

または、以下のものを含めることができます。

 <script src="http://code.jquery.com/jquery-1.10.1.min.js"></script>
于 2013-11-14T15:41:23.410 に答える