Как передать аргумент CFC через AJAX? - PullRequest
4 голосов
/ 04 марта 2010

Я использую следующий скрипт для вызова функции CFC:

function loadQuery() {
    $.get('QueryData.cfc',{},function(GetMyData){
    $("#content").html(GetMyData)
        })
    return false
    }

$(document).ready(function() {
    $("#loadLink").click(loadQuery)
});

Это мой HTML-код:

<a href="" id="loadLink">Load It</a>

<div id="content"></div>

Я вызываю следующий CFC:

<cffunction name="GetMyData" access="public" returntype="query">

    <cfargument name="RecordID" type="string" required="yes">

    <cfset var RecordData = "">

    <cfquery name="RecordData" datasource="MyDSN">
        SELECT
            foo.RecordID,
            foo.RecordName            
FROM
            foo
        WHERE
            foo.RecordID =  #ARGUMENTS.RecordID# ;        
    </cfquery>

    <cfreturn RecordData>

Проблема первая: когда я звоню CFC, появляется страница CFC;описание CFC подходит (после запроса на пропуск администратора).Я не хочу загружать QueryData.cfc;Я хочу выполнить функцию внутри QueryData.cfc.

Вторая проблема - я не могу понять синтаксис для передачи аргумента методу CFC.

Ответы [ 2 ]

5 голосов
/ 04 марта 2010

Вы можете сделать что-то похожее с методом $ .get, но я обычно делаю что-то вроде этого:

$(document).ready(function() {
    $("#loadLink").click(function(e) {
        e.preventDefault();
        var recordata = $(this).attr("href").substring(1); //trim '?' char
        $.ajax({
            type: "GET",
            url: "QueryData.cfc?method=GetMyData",
            data: recordata,
            dataType: "html",
            success: function(message) {
                $("#content").html(message);
            }
        });
    });
});

Где данные для идентификатора записи хранятся где-то в DOM, например:

<a href="?RecordID=#url.RecordID#" id="loadLink">Load Data</a>
<div id="content"></div>

Кроме того, не уверен, как он ведет себя с access = "public" - он все еще может работать - но это, вероятно, должно быть access = "remote" в вашей функции.

1 голос
/ 04 марта 2010

Для того, что вы делаете, хотите попробовать <cfdiv> или <cfajaxproxy>? Это намного проще.

Но чтобы ответить на ваш вопрос, URL GET должен быть XXX.cfc?method=whatever&param=xyz

edit: кстати ваша функция должна иметь access="remote", и возвращать объект Query не рекомендуется, если вы не используете <cfgrid>.

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