this SO answerに基づいて、私はこれをやっています:
$(document).ready(function () {
$('#stateid').change(function () {
$.ajax({
url: "/admin/state_teamlist.php",
data: {
stateid: $("#stateid").val()
},
dataType: "json",
success: function (json) {
$('#teamid').empty().each(json, function (value, key) {
$('#teamid').append($("<option></option>")
.attr("value", value).text(key));
});
}
});
});
});
返されるデータは有効な JSON です (PHP の json_encode から):
{"16734":"Anchorage Christian","12241":"Barrow","1060":"Bartlett","1064":"Chugiak","5802":"Colony","1061":"Dimond","1058":"Eagle River","1063":"East","3943":"Eielson","7104":"Homer","11597":"Houston","5568":"Juneau-Douglas","10229":"Kenai Central","14260":"Ketchikan","9444":"Kodiak","8443":"Lathrop","12152":"Monroe Catholic","7554":"Nikiski","4082":"North Pole","1065":"Palmer","1057":"Service","14370":"Seward","12271":"Sitka","11780":"Skyview","3308":"Soldotna","844":"South","9919":"Thunder Mountain","13803":"Valdez","9766":"Wasilla","1059":"West","1062":"West Valley"}
しかし、私はこのエラーが発生しています:
キャッチされていない TypeError: オブジェクト # にはメソッド 'apply' がありません
jquery.JS のエラー行は次のとおりです。
if ( callback.apply( obj[ i++ ], args ) === false ) {
これに関する完全な部分は次のとおりです。
// args is for internal usage only
each: function( obj, callback, args ) {
var name,
i = 0,
length = obj.length,
isObj = length === undefined || jQuery.isFunction( obj );
if ( args ) {
if ( isObj ) {
for ( name in obj ) {
if ( callback.apply( obj[ name ], args ) === false ) {
break;
}
}
} else {
for ( ; i < length; ) {
if ( callback.apply( obj[ i++ ], args ) === false ) {
Uncaught TypeError: Object #<Object> has no method 'apply'
break;
}
}
}
// A special, fast, case for the most common use of each
}
teamid 選択リストは正しく空になりますが、JSON データが再入力されません。必要に応じて HTML を投稿できますが、問題はないと思います。
私はこのトピックに関するすべての SO 回答を経験しましたが、どの解決策も私の問題に適合していません。このエラーが発生するのはなぜですか?
私はjquery.min.js、jqueryのさまざまなバージョンを試してみましたが、参考文献SOの回答$('teamid')
の$el
ように変更し、.ajaxの代わりに.postと.getを使用しましたが、何も解決していないようです。助けてください。