使用 Coldfusion、Ajax 和 CFC 进行数据查找
Data lookup using Coldfusion, Ajax, and CFC
我使用字符串而不是整数作为键,使用 ColdFusion 和 Ajax 在 table 上进行数据查找。我的测试没有返回任何值,我完全被踩住了。我试图将 ajax 值转换为字符串。
HTML
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script>
<script>
$(document).ready(function() {
$("#init").blur(function() {
alert("This input field has lost its focus.");
var initVal = JSON.stringify({'$(this).val()'});
if(initVal != "") {
$.get("testrun.cfc?method=getuser&init=initVal", function(res) {
$("#team").val=res;
}, "JSON");
}
});
});
</script>
<input type='text' name='init' id='init' /><br>
<input type='text' name='team' id='team'/>
ColdFusion 组件
<cfcomponent>
<cffunction name="getuser" access="remote" returntype="string">
<cfargument name="init" type="string" required="yes">
<cfquery name="getUser" datasource="#DSN#">
SELECT team
FROM users
WHERE init = <cfqueryparam value = "#arguments.init#" cfsqltype="cf_sql_varchar">
</cfquery>
<cfreturn getUser.TEAM />
</cffunction>
</cfcomponent>
问题是您在 Ajax 调用中传递了 字符串 "initval"。
换句话说,jQuery不会神奇地转
"testrun.cfc?method=getuser&init=initVal"
进入
"testrun.cfc?method=getuser&init=whateverYouEnteredInTheTextfield"
改为传递变量的值,将URL参数构建完全留给jQuery:
$("#init").blur(function() {
var initval = $.trim(this.value);
if (!initval) return;
$.get("testrun.cfc" {
method: "getuser",
init: initval
}).done(function (res) {
$("#team").val(res);
});
});
打开浏览器开发人员工具中的网络选项卡并查看正在发生的 Ajax 请求会有所帮助。
我使用字符串而不是整数作为键,使用 ColdFusion 和 Ajax 在 table 上进行数据查找。我的测试没有返回任何值,我完全被踩住了。我试图将 ajax 值转换为字符串。
HTML
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script>
<script>
$(document).ready(function() {
$("#init").blur(function() {
alert("This input field has lost its focus.");
var initVal = JSON.stringify({'$(this).val()'});
if(initVal != "") {
$.get("testrun.cfc?method=getuser&init=initVal", function(res) {
$("#team").val=res;
}, "JSON");
}
});
});
</script>
<input type='text' name='init' id='init' /><br>
<input type='text' name='team' id='team'/>
ColdFusion 组件
<cfcomponent>
<cffunction name="getuser" access="remote" returntype="string">
<cfargument name="init" type="string" required="yes">
<cfquery name="getUser" datasource="#DSN#">
SELECT team
FROM users
WHERE init = <cfqueryparam value = "#arguments.init#" cfsqltype="cf_sql_varchar">
</cfquery>
<cfreturn getUser.TEAM />
</cffunction>
</cfcomponent>
问题是您在 Ajax 调用中传递了 字符串 "initval"。
换句话说,jQuery不会神奇地转
"testrun.cfc?method=getuser&init=initVal"
进入
"testrun.cfc?method=getuser&init=whateverYouEnteredInTheTextfield"
改为传递变量的值,将URL参数构建完全留给jQuery:
$("#init").blur(function() {
var initval = $.trim(this.value);
if (!initval) return;
$.get("testrun.cfc" {
method: "getuser",
init: initval
}).done(function (res) {
$("#team").val(res);
});
});
打开浏览器开发人员工具中的网络选项卡并查看正在发生的 Ajax 请求会有所帮助。