2012-02-27 4 views
2

を返したときに0を返します。次のコードはゼロを返しています。私は/デバッグをテストするとき、私はのcffunctionが成功アラートが「だまされやすい人グループ-2カウント= 0」を示して数18 を生成していることを疑いもせずに言うことができます。 Firebugの応答が表示されます。 { "COLUMNS":[ "DUPECOUNTER"]、 "DATA":[[ "0"]]}CFMLのjQueryのAjax - のcffunctionが実際にこれは、jQueryの質問でなければなら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です。 dupegrouptocheckDupeGroupNumberに変更してください。

引数のデフォルト値(空の文字列)があるため、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

+1

私はCF/AJAXと一緒に働いていて、幸いです。 :)副次的なこととして、このような事態を防ぐために必要な引数からデフォルト値を削除することをお勧めします。 –

0

おそらく、あなたが送信している引数が正しくありません。それは非同期です

-1

を呼び出して取得する、それが理由です点検。あなたのコードは、サーバーからデータが返される前に戻ります。 「if(ReInitAnswer)」の時点で、ReInitAnswerはそこにも存在しません。一般に、ajax呼び出しを含む関数では、何かを返さず、代わりにページ上の何かを変更したり、状態を変更したりします。

ところで、あなたはあなたのJS変数

EDITをVAR必要があります。申し訳ありませんああ、return文は、(インデントが少し混乱した:P)成功の呼び出しでいました。この場合も同じですが、親関数はajaxコール成功関数が戻り値を返す前にすでに終了しています。したがって、戻り値は常に間違っています。

+0

の数を返すには、なぜ私が入れていることではないです成功関数の警告?私は成功関数が完了を待っていることを理解しました。 – user990016

+0

あなたの答えは間違っています。示している( '{[[ "0"]]:[ "DUPECOUNTER"]、 "DATA" "COLUMNS"}')にかかわらず、応答が受信された後にjQueryが何をしているかの、彼はまだCFからの応答を取得していますクエリは0 –

+0

ええのカウントを返しますが、あなたの関数からのリターンは、正しい「時間」 – lzl

関連する問題