以前にも同様の質問があり、回答があったことは知っていますが、コードに特定の問題があります。ドロップダウンが変更されたら、そのサイトからのヤードでid="SITE"ドロップダウンを埋めたいです。id="YARD"これが私のコンポーネント CFC コードです (AjaxFunctions.cfc というページにあります):
<cfcomponent output="false">
<!--- Get YARDS dataset based on SITE --->
<cffunction name="getYards" access="remote" returntype="query" />
<cfargument name="Site" type="string" required="true" />
<cfquery name="rs_Yards" datasource="abc" username="notReal1" password="notReal2" >
<!--- SQL code here --->
</cfquery>
<cfreturn rs_Yards />
</cffunction>
<cfcomponent>
そして、呼び出しページの head セクションにある受信コードは次のとおりです。
<script>
$(document).ready(function() {
$("#SITE").change(function() {
alert( "SITE has changed." );// testing to see if jQuery works
// empty YARD dropdown
$("#YARD").empty();
// perform ajax
$.ajax({
type: "GET",
url: "AjaxFunctions.cfc",
data: {
method: "getYards",
Site: $("#SITE").val()
},
datatype: "json",
success: function(data) {
alert("We received the data."+data);
$.each(data, function () {
$("#YARD").append($("<option></option>").val(this['ITEMID']).html(this['ITEMDESC']));
}
}
});
});
});
</script>
コードをそのまま試してみると、まったく何も起こりません。これらの行だけをコメントアウトすると
$.each(data, function () {
$("#YARD").append($("<option></option>").val(this['ITEMID']).html(this['ITEMDESC']));
}
次に、「サイトが変更されました」という通知が表示され、YARD ドロップダウンが空になりますが、「データを受信しました...」というアラートは、エラー ページの HTML コードのように見えます。後で YARD ドロップダウンを更新することを心配できると思いますが、今はクエリからデータを受け取ることだけが心配です。