CFML Jquery Ajax - возвращает ноль, когда функция действительно возвращает 18 - PullRequest
2 голосов
/ 27 февраля 2012

Это должен быть вопрос Jquery. Следующий код возвращает ноль. Когда я тестирую / отлаживаю, я могу без сомнения сказать, что функция генерирует число 18. В сообщении об успешном завершении отображается «Dupe Group-2 count = 0» Ответ Firebug показывает; { "Columns": [ "DUPECOUNTER"], "ДАННЫЕ": [[ "0"]]}

  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 ]

3 голосов
/ 27 февраля 2012

Вы передаете 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. 1014 *

0 голосов
/ 27 февраля 2012

Это асинхронный, вот почему. Ваш код выполняет возврат до того, как данные будут перенастроены с вашего сервера. в точке «if (ReInitAnswer)» ReInitAnswer даже не существует. Как правило, в функциях, включающих вызов ajax, вы ничего не возвращаете, вместо этого вы что-то изменили бы на странице или изменили состояние.

Кстати, вы должны варьировать переменные js

РЕДАКТИРОВАТЬ: О, извините, оператор возврата был в вызове успеха (отступ был немного запутанным: p). В этом случае все по-прежнему, ваша родительская функция уже завершила работу до того, как функция успешного вызова ajax выполнит возврат. поэтому возвращаемое значение всегда будет неправильным.

0 голосов
/ 27 февраля 2012

Возможно, отправляемый вами аргумент неверен.Осмотреть прием вызова

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...