1

如何使用 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>

示例.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');
            }
    });
});

远程.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 返回值,因此应该禁止或关闭它。

4

2 回答 2

1

如果将 returnFormat 设置为 JSON,则无需在帖子中指定 json。出于向后兼容性的原因,默认情况下 returnformat=WDDX。

如果您想要易用性,请查看<cfajaxproxy>各种 cf-ajax UI-component 标签。

查看此相关问题:Invoke ColdFusion function using AJAX

于 2010-01-09T01:22:52.527 回答
1

你有什么看起来不错,它在哪里遇到错误,错误是什么?如果没有明显的错误消息,我要做的第一件事是在远程方法中抛出一条日志语句,看看你是否正在调用它到服务器。如果这是真的并且它一直到最后,那么提醒返回回调的对象(看起来你已经在这样做了)。

要回答您的具体问题,remote.fc?method=methodName是正确的 URL,如果您要发布数据,那应该有标题等,所以您应该没问题。如果您收到一个错误或您的最终警报的值是什么,则发回一个错误。

于 2010-01-14T14:45:38.833 回答