1

関数を呼び出すコード:

<select id="selectWarrior_1" name="warrior_1"  onclick="return selectWarriors()">
                    <option  selected="selected">----Select----</option>
                </select>

関数のコード:

function selectWarriors() {
        $.ajax({
            url: "display_warriors.php",
            datatype:"json",
            success: function(data) {
                var toAppend = '';
                if(typeof data === "object"){
                    for(var i=0;i<data.length;i++){
                        var warrior = data[i];
                        toAppend += '<option>'+data[i]['warrior_name']+'</option>';
                    }
                    $("#selectWarrior_1 select").append(toAppend);
                }
            }
        });
        return false;
    }

私のphpのコード:

    <?php
header("Content-Type: application/json");

include 'functions/class.php';

$db = new DB();

$result = $db->getWarriors();

$warriors = array();

foreach($result as $names){
    $warriors[] = $names;
}
echo json_encode($warriors);
?>

どうすればこれを修正できますか?なぜそれが私の選択オプションを設定しないのか私は私のjsonをチェックしました、そしてそれは値を持っています。

4

4 に答える 4

2

間隔は許しますが、実際にはjqueryを使用するだけで、関数間の受け渡しと混同しないでください(コンテンツを非同期で再入力する場合、後で問題が発生する可能性があります)。

$(function(){
  $('#selectWarrior_1').bind('click',function(){
        if ( $(this).data('warriors-loaded') ) { return; }
        var self = $(this);
        $.ajax({
            url: "display_warriors.php",
            datatype:"json",
            success: function(data) {
              if (! typeof data == 'object') return false;
              $.each(data, function(i,e) {
                self.append( $('<option>' + e['warrior_name'] + '</option>') );
              }
              self.data('warriors-loaded',true);
            }
        });
  });
});
于 2012-09-13T08:25:31.667 に答える
1

上手

入力タイプselectにはonclickイベントはありません。代わりにonChangeまたはonFocusイベントを使用してください。また、関数の呼び出し中にreturnを使用したくない場合もあります。あなたのシナリオでは、を使用することはかなり役に立たないようreturnです。使用したセレクターにも注意してください。

于 2012-09-13T08:03:13.477 に答える
1

セレクターが正しくありません

変化する$("#selectWarrior_1 select")

$("#selectWarrior_1")

于 2012-09-13T08:03:16.613 に答える
0

datajsonオブジェクトとして扱う必要があります:

function selectWarriors() {
    $.getJSON('display_warriors.php', function(data) {
        var toAppend = '';
        $.each(data, function(key, val) {
            toAppend += '<option>'+val+'<\/option>';
        });
        $("#selectWarrior_1").append(toAppend);
    });
}
于 2012-09-13T07:59:25.887 に答える