发布静态&使用JQUERY& amp;到服务器的可变长度数据ColdFusion的

时间:2010-03-13 01:50:08

标签: jquery ajax json post coldfusion

我希望使用JQUERY& amp;将以下类型的数据发布到服务器ColdFusion的:

foodID - int
foodDESC - text html text from a WYSIWYG (CKEDITOR)
--there will always be just 1 foodID and foodDESC per POST to the server but there can be a variable number of:
locationID - int
LocationDesc - text
--There can be 0-8+ of these.

我应该在一个帖子还是多个帖子中发送此信息? 如果有一篇帖子,最聪明的方法是什么?我以前从未处理过这么多数据。

谢谢

2 个答案:

答案 0 :(得分:0)

您可以在一个POST中发送它们,只需确保输入字段名称是唯一的。

答案 1 :(得分:0)

我将不得不猜测你的表格是什么样的:

myform.cfm(假设已加载jquery 1.4.x和自定义js脚本)

<form id="myForm">
<input type="hidden" name="foodID" id="foodID" value="" />
<textarea name="foodDESC" id="foodDESC"></textarea>

<input type="text" name="locationID1" value="" class="locID" />
<input type="text" name="locationDesc1" value="" class="locDesc" />

<input type="text" name="locationID2" value="" class="locID" />
<input type="text" name="locationDesc2" value="" class="locDesc" />

..more locationIDs and LocationDesc inputs as needed..
<input type="button" name="save" id="save" value="Save" />
</form>

myScript.js

// I highly recommend validating javascript with www.jslint.com and testing with firebug
$("#save").click(function () {
    var serviceUrl, foodID, foodDESC, locIDs, locDescriptions;
    serviceUrl = "myProcessor.cfc?method=save";
    locIDs = [];
    locDescriptions = [];

    // get the value of the two easy ones:
    foodID = $("#foodID").val();
    foodDESC = $("#foodDESC").val();

    // Reference: http://marcgrabanski.com/article/jquery-select-list-values
    // Get all locationIDs based on the similar class name and save them to an array

    $('.locID').each(function (i, item) {
        locIDs[i] = $(item).val();
    });

    // likewise for the location descriptions
    $('.locDesc').each(function (i, item) {
        locDescriptions[i] = $(item).val();
    });

    // send form data to server side form processor
    $.post(serviceUrl, {
        foodID: foodID,
        foodDESC: foodDESC,
        locationIDs: locIDs,
        locationDescs: locDescriptions 
    }, function (result) { 

            // display result message
            alert(result);
        }, "json");

});

myProcessor.cfc

<cfcomponent output="no">
<cfsetting showdebugoutput="no">
<cfset ds="myDatasource">

    <cffunction name="save" access="remote" returnFormat="JSON" output="no" hint="Saves data to the server db">
            <cfargument name="foodID" type="string" required="yes">
            <cfargument name="foodDESC" type="string" required="yes">
            <cfargument name="locationIDs" type="string" required="yes">
            <cfargument name="locationDescs" type="string" required="yes">
            <cfset var result = "Success!">

            <cftry>

            <!--- Process arguments here for your server side needs such as a cfquery
            foodID will be a simple string or integer
            foodDESC will be a string varchar or text
            locationIDs and locationDescs will be a javascript array. Can't remember if Coldfusion will process it as a comma delimited list or an array. Either way, it's simple to handle with CF. If it's an array, you will need to modify the argument type above --->

            <cfcatch>
                <!--- Uh oh, something happened, return the message for debugging --->
                <cfset result = cfcatch.message & " " & cfcatch.detail>
            </cfcatch>
            </cftry>
            <cfreturn result>
     </cffunction>
</cfcomponent>