Ajax jQuery вызов компонента ColdFusion - PullRequest
2 голосов
/ 06 сентября 2011

Я новичок в jQuery и пытаюсь создать страницу входа в систему, которая будет выполнять Ajax-вызов CFC, который просто возвращает true или false, если вход был успешным.Мой призыв сделать это к CFC с моими аргументами правильно, но то, что возвращается, является проблемой.Если я установлю свой тип данных в jQuery как «html», я увижу, что выглядит как копия всей моей страницы в html вместе с «истинным» значением, которое я ищу.Но если я попытаюсь установить его в "JSON", ничего не произойдет.Я использую ColdFusion 9, jQuery 1.6.2.

Моя функция jQuery:

$(function() {  
    $('.error').hide();  
    $(".button").click(function() {  

        // validate form here  
        $('.error').hide();  
        var name = $("input#username").val();  
        var pass = $("input#password").val();  
        if (name == "") {  
            $("label#username_error").show();  
            $("input#username").focus();  
            return false;  
        }  
        else if (pass == "") {  
            $("label#password_error").show();  
            $("input#password").focus();  
            return false;  
        }  
        else {
            var bodyContent = $.ajax({
                  url: "cfc/Login.cfc?method=tryLogin&returnFormat=JSON",
                  global: false,
                  type: "POST",
                  data: {username:name,password:pass},
                  dataType: "json",
                  async:false,
                  success: function(msg){
                     alert(msg);
                  }
               }
            ).responseText;

        }
    }); 
});

Мой код CFC, ОЧЕНЬ простой, я просто пытаюсь заставить его правильно возвращаться длясейчас:

<cfcomponent name="Login" output="false">
    <cffunction name="tryLogin" access="remote" output="false">
        <cfargument name="username" type="string" required="true"/>
        <cfargument name="password" type="string" required="true"/>
        <cfset var result = true />

        <cfreturn result />
    </cffunction>
</cfcomponent>

Ответы [ 2 ]

2 голосов
/ 31 января 2012

Я думал, что CF9 изменил это поведение, и вам больше не нужно было использовать "hack" onRequestStart для Ajax-называемых CFC.

Я, конечно, мог ошибаться - но я думал, что это так ....

1 голос
/ 06 сентября 2011

Когда вы говорите:

Если я установлю свой тип данных в jQuery как «html», я увижу, как выглядит копия всей моей страницы в html вместе с «истинным» значением, которое я ищу.

Вы имеете в виду, что видите свое "истинное" значение, за которым следует информация об отладке ColdFusion? Если да, используете ли вы Application.cfm или Application.cfc на своем сайте? Если Application.cfc, это распространенная проблема с функциональностью AJAX. Вам нужно перехватить запрос AJAX CFC в функции onRequestStart, удалить функцию OnRequest для этого запроса и отключить отладку. Попробуйте добавить это в функцию onRequestStart:

<cfif LCase(Right(ARGUMENTS.TargetPage,3)) EQ "cfc">
<cfset StructDelete(THIS,"OnRequest")>
<cfsetting showdebugoutput="no">
</cfif>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...