2010-01-09 58 views
1

如何使用jQuery.post()將表單發佈到Coldfusion.cfc方法並返回json數據?是否有某種方法需要格式化url或表單值以指定cfc方法來遠程調用?我如何告訴Coldfusion返回json數據?如何使用jQuery.post()將ColdFusion 8 cfc返回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的調試真的會偷懶up cfc返回值,所以它應該被抑制或關閉。

+0

您可以在帖子中傳遞returnformat,而不是將其設置爲cffunction標記中的屬性。 您可能想要在cfcomponent和cffunction標記中將輸出設置爲false。 – 2010-01-09 20:13:50

回答

1

你有什麼看起來不錯,在那裏它遇到錯誤的,什麼是錯誤?如果沒有明顯的錯誤消息,我會做的第一件事就是在遠程方法中拋出一條日誌語句,並確定您是否正在調用服務器。如果這是真的,並且它一直到最後,那麼就會提醒回到回調的對象(看起來您已經這麼做了)。

要回答你的具體問題,remote.fc?method=methodName是正確的URL,如果你發佈的數據,應該有標題等,所以你應該沒問題。如果您收到一個錯誤或者最終警報的價值是什麼,請回復錯誤。

+0

很好的建議。使用Coldfusion進行AJAX調試需要一些不同於我所採用的策略。 – 2010-01-14 20:28:43

1

如果將returnFormat設置爲JSON,則不需要在帖子中指定json。爲了向後兼容的原因,默認情況下爲returnformat = WDDX。

如果您想要易用,請查看<cfajaxproxy>和各種cf-ajax UI組件標籤。

退房此相關的問題:Invoke ColdFusion function using AJAX

相關問題