2012-02-27 42 views
2

這必須是一個JQuery的問題。以下代碼返回零。當我測試/調試時,我可以毫無疑問地說,該功能正在生成數字18. 成功警報顯示「Dupe Group-2 count = 0」。 Firebug反應表明: { 「列」: 「DUPECOUNTER」], 「DATA」:[ 「0」]]}CFML Jquery Ajax - 當cffunction實際返回時返回零18

if ($(e.target).is(":checked")) { 
    $firstTD = $(this).parent().siblings().first(); 
    SaveDupeGroup = $firstTD.text(); 
     $.ajax({ 
      type: 'GET', 
      url: 'cfc/basic.cfc?method=CheckDupeGroup&returnformat=json', 
     dataType: 'json', 
     data: 'dupegrouptocheck=' + $firstTD.text(), 
      error: function (xhr, textStatus, errorThrown) { 
      // show error 
      alert(errorThrown); 
      }, 
      success: function (response, textStatus, jqXHR) { 
      alert('Dupe Group-' + SaveDupeGroup + ' count=' + response.DATA[0]); 
      ReInitAnswer = confirm('All of the names in this group have been checked.\nDo you want to remove them from the list?'); 
     if (ReInitAnswer) { 
       alert('continued'); 
       } else { 
       alert('canceled'); 
       return false; 
       } 
     } 
      }); 
     } 

<cffunction name="CheckDupeGroup" output="false" access="remote"> 
<cfargument name="DupeGroupNumber" required="True" type="string" default="" /> 
<cfset var qResults = "" /> 
<cfquery name="qResults" datasource="#request.dsn#"> 
SELECT COUNT(id) AS DupeCounter 
FROM Temp_Duplicate_Individuals_AddressZipState 
Where dupe_group_number = #val(arguments.DupeGroupNumber)# and isnull(not_dupe_flag,'False') = 'False' 
</cfquery> 
<cfreturn (qResults) /> 
</cffunction> 

回答

3

您正在通過data: 'dupegrouptocheck=' + $firstTD.text(),但函數中的參數名稱爲DupeGroupNumber。將dupegrouptocheck更改爲DupeGroupNumber

這不是拋出一個必需的參數錯誤的原因是因爲你有一個參數的默認值(一個空字符串),CF將使用默認值,而不是拋出一個錯誤,因爲沒有傳入參數。

所以,你基本上是運行:

SELECT COUNT(id) AS DupeCounter 
FROM Temp_Duplicate_Individuals_AddressZipState 
Where dupe_group_number = "" and isnull(not_dupe_flag,'False') = 'False' 

因爲你沒有一個dupe_group_number,等於"",查詢正確返回0

+0

好抓住。你不會相信我一直在看這個。我花了好幾天的時間試圖弄清楚CF爲什麼要發送如此多的html與響應。我猜我的眼睛模糊不清。 – user990016 2012-02-27 04:34:05

+1

呃,幸運的是我最近一直在使用CF/AJAX。 :)作爲一個側面說明,我建議從必需的參數中刪除默認值以防止發生這種情況。 – 2012-02-27 04:35:13

0

也許您要發送的說法是不正確。檢查撥打電話

-1

這是異步的,這就是爲什麼。在您的服務器重新啓動數據之前,您的代碼正在執行返回。在「if(ReInitAnswer)」的時候,ReInitAnswer甚至不存在。通常,在包含ajax調用的函數中,您不會返回任何內容,而是會更改頁面上的某些內容或更改狀態。

順便說一句,你應該VAR你的JS變量

編輯:噢,對不起,return語句是成功的呼叫(壓痕有點混亂:P)。在這種情況下,它仍然是一樣的,在ajax調用成功函數返回之前,你的父函數已經完成了。因此返回的值將始終是錯誤的。

+0

計數難道這不正是我把成功功能中的警報?我明白,成功功能正在等待完成。 – user990016 2012-02-27 04:28:36

+0

您的回答不正確。無論接收到響應後jQuery做了什麼,他仍然從CF('{「COLUMNS」:[「DUPECOUNTER」],「DATA」:[[「0」]]})得到響應,該查詢返回計數爲0. – 2012-02-27 04:31:26

+0

是的,但從您的函數返回將永遠不會在正確的「時間」 – lzl 2012-02-27 04:31:27