Я не получаю возврат данных, используя ColdFusion и jQuery Ajax - PullRequest
1 голос
/ 07 декабря 2011

Я получаю пустой ответ.Я даже жестко закодировал ответ.Я использую firebug и копирую местоположение с параметрами, и он показывает ответ, когда я вставляю его в свой браузер.

Код:

<script type="text/javascript">
$(document).ready(function(){
    $("#mySubmitButton").click(function(){
        var zipCodeFilter = $('input[name=zipCodeFilter]').val();
        var zipRadius = $('select[name=zipRadius]').val();
        var querystring = "zipCodeFilter="+zipCodeFilter+"&zipRadius="+zipRadius;
        $.ajax(
            {
                type: "POST",
                dataType: "json",
                url: "http://dev.lead-hub.com/datasource/dataAccess.cfc?method=getZipCodes&returnformat=json",
                data: querystring,
                success: function(response){
                    var resp = jQuery.trim(response);//getting alot of whitespace in my return CFC method
                    alert(resp);
                    return false;
                    if (resp == 'true'){
                        $('#loginResponse').html("<span style='color: green;font-weight: bold; font-size: 15px;'>Success!!</span>");
                        // you'll want to put your code here to move onto the next page. I would simply do a page refresh
                        // and continue with using the session's login data
                    }else{
                        $('#loginResponse').html("<span style='color: red;font-weight: bold; font-size: 15px;'>Failed!!</span>");
                    }
                    return false;
                    }
                }
            );
        });
    }
);

Код для CFC:

<cffunction name="getZipCodes" access="remote" returnType="string">
    <cfargument name="zipCodeFilter" required="true" type="numeric">
    <cfargument name="zipRadius" required="true" type="numeric">
    <cfset var local = {} />
    <cfset local.getZipCodes = "" />        
        <cfquery name="local.getZipCodes"  dataSource="#application.dns_live#">
            SELECT h.*
            FROM tbl_zipcodes g
            JOIN tbl_zipcodes h ON g.zipcode <> h.zipcode
            AND g.zipcode = '#arguments.zipCodeFilter#'
            AND h.zipcode <> '#arguments.zipCodeFilter#'
            WHERE g.GeogCol1.STDistance(h.GeogCol1)<=(#arguments.zipRadius# * 1609.344)
        </cfquery>
        <cfset local.returnString = "Good" />
    <cfreturn local.returnString />
</cffunction>

1 Ответ

2 голосов
/ 07 декабря 2011

Поскольку вы получаете пустой ответ в firebug, но вы видите ожидаемое значение при обращении к URL-адресу непосредственно в браузере, это кажется мне возможной проблемой кэширования. Попробуйте добавить «cache: false» в настройки ajax:

$.ajax({
    cache: false,
    type: "POST",
    dataType: "json",
    url: "http://dev.lead-hub.com/datasource/dataAccess.cfc?method=getZipCodes&returnformat=json",
    data: querystring,
    success: function(response){
        var resp = jQuery.trim(response);//getting alot of whitespace in my return CFC method
        alert(resp);
        return false;
        if (resp == 'true'){
            $('#loginResponse').html("<span style='color: green;font-weight: bold; font-size: 15px;'>Success!!</span>");
            // you'll want to put your code here to move onto the next page. I would simply do a page refresh
            // and continue with using the session's login data
        }else{
            $('#loginResponse').html("<span style='color: red;font-weight: bold; font-size: 15px;'>Failed!!</span>");
        }
        return false;
    }
});

редактировать

Поскольку это было не так, мне пришла в голову другая мысль. Вы говорите, что это работает для вас, когда вы вставляете параметры в ваш URL и запрашиваете его напрямую. Это означает, что вы запрашиваете свой метод с помощью запроса GET, передавая параметры в области URL. Это отличается от вашего ajax-запроса, так как это тип: "POST". Попробуйте изменить ваш ajax на «GET» и посмотрите, начнете ли вы получать что-то обратно.

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