Как вернуть данные JSON с помощью jQuery.post () в Cfc Coldfusion 8? - PullRequest
1 голос
/ 09 января 2010

Как опубликовать форму с помощью jQuery.post () в методе Coldfusion.cfc и вернуть данные json? Есть ли определенный способ мне нужно отформатировать URL или значения формы, чтобы указать метод cfc для удаленного вызова? Как мне сказать Coldfusion возвращать данные json?

Я искал существующие вопросы по jQuery / Coldfusion.cfc и ищу некоторую ясность. Я не могу найти пример, который показывает полный процесс к / от Coldfusion cfc.

HTML-форма:

<!--- Assume: jquery, jquery-ui, sample.js is loaded --->
<p><a href="#" id="openDialog">Open Dialog</a></p>

<div id="myDialog" title="My Dialog" class="dialog">
<form id="myForm">
    <label for="title">Title:</label><br />
    <input type="text" name="title" id="title" value="" /><br />
    <label for="address">Address:</label><br />
    <input type="text" name="address" id="address" value="" /><br />
    <input type="submit" name="save" value="save" />
</form>
</div>

sample.js:

jQuery(function ($) {

    var saveUrl = "remote.cfc?method=save";  // Is this the right way??

    // Bind link to open the dialog box
    $('a#openDialog').click(function() {
        $('#myDialog').dialog('open');
    });

    // Configure jQuery UI dialog box and callback methods
    // Is this right??
    $("#myForm").dialog({
        buttons: {
            'Save': function() { 
                $.post(saveUrl, $("#myForm").serialize(), function(result){
                    alert("Result: " + result);
                    }, "json");
                $(this).dialog('close');
               },
            'Cancel': function() {
                $(this).dialog('close');
            }
    });
});

remote.cfc:

<cfcomponent>

    <!--- If I set the returnFormat to JSON do I need to specify json in the post too? --->
    <cffunction name="save" access="remote" returntype="string" returnFormat="JSON">
        <cfargument name="title" type="string" required="yes">
        <cfargument name="address" type="string" required="yes">
        <cfset var result = structNew()>

        <!--- Do some data manipulation or cfquery here, save to result struct --->

        <cfreturn result>
    </cffunction>

</cfcomponent>

* Обратите внимание, я обнаружил, что отладка в Coldfusion действительно приведет к потере возвращаемых значений cfc, поэтому его следует отключить или отключить.

Ответы [ 2 ]

1 голос
/ 14 января 2010

Что у вас хорошо выглядит, где попадает ошибка и в чем ошибка? Если очевидного сообщения об ошибке нет, первое, что я хотел бы сделать, - бросить оператор log в удаленный метод и посмотреть, делает ли он вызов на сервере. Если это так и до конца дойдет до конца, тогда предупредите объект, который возвращается к обратному вызову (похоже, вы уже это делаете).

Чтобы ответить на ваш конкретный вопрос, remote.fc?method=methodName - это правильный URL-адрес, и если вы публикуете данные, он должен иметь заголовок и т. Д., Чтобы с вами все было в порядке. Опубликуйте сообщение об ошибке, если вы его получили, или какова стоимость вашего последнего предупреждения.

1 голос
/ 09 января 2010

Если вы установите returnFormat в JSON, вам не нужно указывать json в записи. returnformat = WDDX по умолчанию для обратной совместимости.

Если вы хотите простоты использования, ознакомьтесь с <cfajaxproxy> и различными тегами cf-ajax UI-component.

Проверьте этот связанный вопрос: Вызовите функцию ColdFusion, используя AJAX

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