调用函数的代码:
<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并且它有值。
答案 0 :(得分: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);
}
});
});
});
答案 1 :(得分:1)
好
输入类型选择没有onclick事件。请改用onChange或onFocus事件。你也不想在调用函数时使用return。在您的场景中,使用return
似乎毫无用处。还要观看您使用的选择器。
答案 2 :(得分:1)
您的选择器不正确
更改$("#selectWarrior_1 select")
至$("#selectWarrior_1")
答案 3 :(得分:0)
您需要将data
视为json对象:
function selectWarriors() {
$.getJSON('display_warriors.php', function(data) {
var toAppend = '';
$.each(data, function(key, val) {
toAppend += '<option>'+val+'<\/option>';
});
$("#selectWarrior_1").append(toAppend);
});
}