我正在構建一個網頁,在webform提交後將進行AJAX調用。 AJAX然後調用一個cfc,其中有一個函數調用一個SQL存儲過程,將webform值作爲輸入參數傳遞。直到這裏沒問題,但是我對如何將數據返回給調用AJAX函數感到困惑 - 當存儲過程返回多個結果集時。將多個cfquery結果返回給AJAX調用
爲了更清楚一點,存儲過程內部有許多SELECT事務,並且它們中的每一個都作爲cfstoredproc中cfprocresult的一部分被捕獲。如果只有一個cfprocresult,將它傳遞迴AJAX看起來很簡單,但是如何將多個cfprocresult結果發送回調用的AJAX函數?
下面僞代碼:
AJAX: ---------
$.ajax(
{
type: 「post」,
url: "Contacts.cfc",
data: {
method: "retrieveCustomers",
username: this.DOMReferences.Name.val(),
},
dataType: "json",
success: function(objResponse){
if (objResponse.SUCCESS){
// rest of AJAX to process returned data here
Contacts.cfc ---------
<cfcomponent>
<cffunction name="retrieveCustomers" returntype="query">
<cfstoredproc datasource="#application.dsn_spoon#" procedure="proc_getUsers_paged">
<cfprocparam cfsqltype="cf_sql_varchar" value="#username#">
<cfprocresult name="qResult1" resultset="1">
<cfprocresult name="qResult2" resultset="2">
<cfprocresult name="qResult3" resultset="3">
</cfstoredproc>
// how do i return all 3 result sets back to calling AJAX function?
</cffunction>
</cfcomponent>
注意:我很少控制更改存儲過程邏輯。現有網頁在調用cfstoredproc組件時正在使用頁面本身的刷新,而不是使用AJAX。我正在改寫UI來代替使用AJAX。
謝謝!
我認爲你可以做的是創建一個結構並將結果集存儲在其中。然後使用SerializeJSON函數將結構轉換爲JSON並將其作爲響應返回給Ajax。一旦你獲得了Ajax響應,你需要做的就是進一步解析和處理它。 –
另外,如果你使用ajax直接調用你的CFC函數,那麼你需要設置access = remote並設置returntype = JSON –
@Keshavjha - 謝謝。我想我現在理解這種方法。將在某個時候嘗試! – maverick