我遇到以下代碼的問題。我希望驗證地址(城市,郵政編碼,州),並根據我們的數據庫中的內容進行檢查,該數據庫在CFC中被調用。 當我有Ajax的dataFilter設置,它進入錯誤並顯示「parseerror」,我看不到字符串JavaScript返回。 當我刪除dataFilter,在控制檯中,我看到JavaScript字符串返回,但它總是進入成功設置的「其他」。
任何人都知道發生了什麼事?我究竟做錯了什麼? CFC確實根據Fiddler正確返回(true/false)。Jquery Ajax調用CFC不工作
$.ajax({
type: "get",
url: "/component/validateLenderAddress.cfc",
data: {
method: "validateZipCityState",
returnFormat: "json",
zip:$('input[name*="zip"]').val(),
city:$('input[name*="city"]').val(),
state:$('input[name*="state"]').val()
},
async: false,
cache: false,
dataFilter: function(data) {
return $.parseJSON(data);
},
success:function(data) {
if (data) {
alert('Address Validated');
return true;
}
else {
alert('Address could not be validated');
return false;
}
},
error: function(xhr, ajaxOptions, thrownError) {
alert(ajaxOptions);
}
});
我CFC是
<cfcomponent output="false" extends="component.Database" hint="validates lender address lendermaint.inc">
<cffunction name="validateZipCityState" output="false" returnType="struct" access="remote">
<cfargument name="zip" type="string" required="true">
<cfargument name="city" type="string" required="true">
<cfargument name="state" type="string" required="true">
<cfset var local = structNew()>
<cfquery name="local.zipCodeList" datasource="#getDSN()#" username="#getUsername()#" password="#getPassword()#">
SELECT TOP 1 1
FROM ZipCode
WHERE zipCode = <cfqueryparam cfsqltype="cf_sql_varchar" value="#trim(arguments.zip)#">
AND city = <cfqueryparam cfsqltype="cf_sql_varchar" value="#trim(arguments.city)#">
AND stateShort = <cfqueryparam cfsqltype="cf_sql_varchar" value="#trim(arguments.state)#">
</cfquery>
<cfreturn local.zipCodeList.recordCount EQ 1>
</cffunction>
謝謝!
您能與我們分享一個從cfc頁面返回的字符串的例子嗎?它實際上是json嗎? –
謝謝,就是這樣。它在我們的系統中包含了一個需要查詢的腳本...當需要cfc時,我需要消除這個腳本。所以現在只包括JSON :) –