jquery - 无法将 ID 变量传递到在模态框中显示正确记录的 CFC

标签 jquery twitter-bootstrap coldfusion

我正在尝试显示一个应根据编辑按钮中的 ID 进行填充的表单。所以我正在采取的程序执行以下操作:

  1. 选择带有 ID 的编辑按钮
  2. Bootstrap模态框显示
  3. 在框中显示表单
  4. 根据 ID 选择显示记录

尝试以多种方式执行此操作(包括创建带有表单标记和隐藏输入的按钮)后,我无法在模式框中显示正确的记录。目前,它显示第一条记录,但不显示我使用编辑按钮查找的记录。代码如下。如果有人能帮我解决这个问题,请先致谢。

<cffunction name="GetOrganizationByID" access="public" returntype="query" output="false" hint="gets one organization by its ID.">
    <cfargument name="OrgID" type="any" required="true" default="">
        <cfset var Org = "" />
        <cftry>
            <cfquery datasource = "#application.dsn.name#" name="Org">
                        SELECT  org.nID,
                                org.nSuperOrg,
                                org.nOrgRefID,
                                org.cOrgRefID,
                                org.nActive,
                                org.cName AS cOrgName,
                                orginfo.cPhone,
                                orginfo.cPhoneExt,
                                orginfo.cFax,
                                org.nAvailable,
                                orginfo.cAddress1,
                                orginfo.cAddress2,
                                orginfo.cCity,
                                orginfo.cState,
                                orginfo.cZip,
                                orginfo.cCountry,
                                orginfo.cWebSite
                    from    Organizations org
                            left join Organization_Info orginfo
                                on org.nID = orginfo.nOrganizationID
                    where   org.nID = <cfqueryparam cfsqltype="cf_sql_integer" value="#Arguments.orgID#">
            </cfquery>
            <cfreturn local.Org>
            <cfcatch>

按钮:

<td><a href="##" role="button" data-id="#AllOrgs.nid#" id="loadID" class="btn btn-primary btn-sm pull-right" data-toggle="modal" data-target="##edit-org">Edit</a>

JQuery:

<script>
$(document).ready(function() {
    $("#loadID").click(function(e) {
        var id=$(this).data('id');
        e.preventDefault();
        var recordata = $(this).attr("href").substring(1); //trim '?' char
        $.ajax({
            type: "Post",
            url: "/pathtoCFC/Organizations.cfc?method=GetOrganizationByID",
            data: recordata,
            dataType: "html",
            success: function(message) {
                $("#content").html(message);
            }
        });
    });
});

模态框:

<div id="edit-org" class="modal container hide fade" tabindex="-1">
<div class="modal-dialog">
    <div class="modal-content">
        <div class="modal-header">
            <button type="button" class="close" data-dismiss="modal" aria-hidden="true">
                ×
            </button>
            <h3>
                Edit Organization Info
            </h3>
        </div>
        <div class="modal-body">
            <section id="my-account-security-form" class="page container">
                <form id="EditOrgForm" class="form-horizontal" action="#cgi.SCRIPT_NAME#?app=edit&view=newOrganization" method="post">
                    <!--- <div class="container">
                        <div class="alert alert-block alert-info">
                            <p>
                                Enter updated security information for your account as desired. Fields marked with an asterisk are required.
                            </p>
                        </div> --->
                        <div class="row">
                            <div class="span7">
                                <fieldset>
                                    <!--- <legend>
                                        Add User Info
                                    </legend> --->
                                    <br>
                                    <div class="control-group ">
                                        <label class="control-label">
                                            Organization Name
                                            <span class="required">
                                                *
                                            </span>
                                        </label>
                                        <div class="controls">
                                            <input  name="orgname" class="span4" type="text" value="#AllOrgs.cOrgName#" autocomplete="false">
                                        </div>
                                    </div>
                                    <div class="control-group ">
                                        <label class="control-label">
                                            Address
                                            <span class="required">
                                                *
                                            </span>
                                        </label>
                                        <div class="controls">
                                            <input id="new-pass-verify-control" name="address" class="span4" type="text" value="#AllOrgs.cAddress1#" autocomplete="false">
                                        </div>
                                    </div>
                                    <div class="control-group ">
                                        <label class="control-label">
                                            Address 2
                                        </label>
                                        <div class="controls">
                                            <input  name="address2" class="span4" type="text" value="#AllOrgs.cAddress2#" autocomplete="false">
                                        </div>
                                    </div>
                                    <div class="control-group ">
                                        <label class="control-label">
                                            City
                                            <span class="required">
                                                *
                                            </span>
                                        </label>
                                        <div class="controls">
                                            <input  name="city" class="span4" type="text" value="#AllOrgs.cCity#" autocomplete="false">
                                        </div>
                                    </div>
                                    <div class="control-group">
                                        <label for="challengeQuestion" class="control-label">
                                            State
                                            <span class="required">
                                                *
                                            </span>
                                        </label>
                                        <div class="controls">
                                            <select id="challenge_question_control" name="state" class="btn-sm">
                                                <option value="#iif(Allstates.RecordCount,DE('#Allstates.stateid#'),de(''))#"
                                                    <cfif isDefined('Allstates.stateid')>
                                                        selected="true"
                                                    </cfif>
                                                    >#iif(Allstates.RecordCount,DE('#Allstates.StateName#'),de('---Select State---'))#</option>
                                                <cfloop query="Allstates">
                                                <option value="#stateID#">
                                                    #StateName#
                                                </option>
                                                </cfloop>
                                            </select>
                                        </div>
                                    </div>

                                </fieldset>
                            </div>
                            <div id="acct-verify-row" class="span9">
                                <fieldset>
                                    <div class="control-group ">
                                        <label class="control-label">
                                            Zip Code
                                            <span class="required">
                                                *
                                            </span>
                                        </label>
                                        <div class="controls">
                                            <input  name="zipcode" class="input-small" type="text" value="#AllOrgs.cZip#" maxlength="5" autocomplete="false">
                                        </div>
                                    </div>
                                    <div class="control-group">
                                        <label for="challengeQuestion" class="control-label">
                                            Country
                                            <span class="required">
                                                *
                                            </span>
                                        </label>
                                        <div class="controls">
                                            <select id="challenge_question_control" name="Country" class="btn-sm">
                                                <option value="#iif(AllCountries.RecordCount,DE('#AllCountries.countryid#'),de(''))#"
                                                    <cfif isDefined('AllCountries.countryid')>
                                                        selected="true"
                                                    </cfif>
                                                    >#iif(AllCountries.RecordCount,DE('#AllCountries.CountryName#'),de('---Select Country---'))#</option>
                                                <cfloop query="AllCountries">
                                                    <option value="#CountryCode#">#CountryName#</option>
                                                </cfloop>
                                            </select>
                                        </div>
                                    </div>
                                    <div class="control-group ">
                                        <label class="control-label">
                                            Fax
                                        </label>
                                        <div class="controls">
                                            <input  name="fax" class="span4" type="text" value="#AllOrgs.cFax#" autocomplete="false">
                                        </div>
                                    </div>
                                    <div class="control-group ">
                                        <label class="control-label">
                                            Website (URL)
                                        </label>
                                        <div class="controls">
                                            <input  name="webUrl" class="span4" type="text" value="#AllOrgs.cWebsite#" maxlength="150" autocomplete="false" placeholder="http://www.yoursite.com">
                                        </div>
                                    </div>
                                    <div class="control-group ">
                                        <label class="control-label">
                                            Phone Number
                                            <span class="required">
                                                *
                                            </span>
                                        </label>
                                        <div class="controls">
                                            <input  name="phone" class="span4" type="text" value="#AllOrgs.cPhone#" autocomplete="false">
                                        </div>
                                    </div>
                                    <div class="control-group ">
                                        <label class="control-label">
                                            EXT
                                        </label>
                                        <div class="controls">
                                            <input  name="phoneext" class="input-small" type="text" value="#AllOrgs.cPhoneExt#" maxlength="8" autocomplete="false">
                                        </div>
                                    </div>
                                </fieldset>
                            </div>
                        </div>
                        <footer id="submit-actions" class="form-actions">
                            <button id="submit-button" type="submit" class="btn btn-primary" name="action"  value="CONFIRM">
                                Save
                            </button>
                            <button type="button" data-dismiss="modal" class="btn" value="CANCEL">
                                Cancel
                            </button>
                        </footer>
                    </div>
                </form>
            </section>
        </div>
        <div class="modal-footer">
            <!--- <button type="button" data-dismiss="modal" class="btn">
                Close
            </button> --->
            <!--- <button type="button" class="btn btn-primary">
                Save changes
                </button> --->
        </div>
    </div>
</div>

最佳答案

对于 jquery ajax 请求,您应该将 data 参数设置为一个对象,该对象包含您要发布的每个值的属性。

data:  { "parameter" : "value" },

将被表单范围(form.parameter)下的.cfm页面选取 并在 cfc 远程方法调用中作为参数(cfc 远程参数也可以在查询字符串中传递)

此代码中的一个问题是未传递 OrgID 参数。

尝试换行

var recordata = $(this).attr("href").substring(1); //trim '?' char

var recordata = { "OrgID" : id };

另一个问题可能是,在 cfc 函数中返回本地范围 (local.Org) 中的变量,但查询名称位于变量(默认)范围 (name="Org") 中(如果您运行的是较旧的版本) CF版本

<cfset var local = StructNew() />
...
<cfquery datasource = "#application.dsn.name#" name="local.Org">

或者如果您正在运行较新的版本(CF 9 或更高版本),则无需创建本地结构

关于jquery - 无法将 ID 变量传递到在模态框中显示正确记录的 CFC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29168380/

相关文章:

javascript - 获取调用的方法名和传入的参数

html - 覆盖内容并使其响应

javascript - Bootstrap 在计算机浏览器上工作,但在移动浏览器上不起作用

sql - 选择 * 不返回所有列 - Coldfusion/SQL Server 2008

javascript - 在单独的 Div 中加载相同的代码两次

javascript - $.getJSON 不触发 console.log

一个范围内的当前时间指示的jquery帮助

html - 使用 Bootstrap 的带有标题的框

jar - 为什么我的 jar 没有加载?

excel - Coldfusion SpreadsheetAddRow() - 如何使用逗号绕过值