Coldfusion在不刷新页面的情况下执行存储过程?

时间:2011-12-13 20:13:25

标签: jquery coldfusion

我有一个带有“selection”参数的存储过程

<cfstoredproc procedure="MyProcedure" datasource="MyDataSource">
  <cfprocparam type="in" cfsqltype="cf_sql_integer" value="#selection#" null="no">
</cfstoredproc>

我有一个选择框,用户可以在其中选择框,我想使用jquery“调用”存储过程:

$(document).ready(function(){
        $('#selectbox').change(function() {
            // update my #selection# variable
                        // run the stored procedure again (the one above)
        });
    });

有办法做到这一点吗?我知道它混合了客户端和服务器端代码但我无法刷新页面,因为页面上有多个表单...

3 个答案:

答案 0 :(得分:6)

$(document).ready(function(){
        $('#selectbox').change(function() {
            $.get('pathToYourStoredProcCFM.cfm?selectVal=' + $(this).val(), function (res) {

               // if you need to handle the response to the stored proc 
               // on the client side (which was output in your CFM code), do so here
               // (the response from CF is stored in the "res" variable)

            });

        });
    });

答案 1 :(得分:2)

您需要在其中创建一个包含存储过程的.cfm页面,并使用AJAX调用来执行存储过程。

storedProc.cfm

<cfparam name="URL.selection" />

<cfstoredproc procedure="MyProcedure" datasource="MyDataSource">
  <cfprocparam type="in" cfsqltype="cf_sql_integer" value="#URL.selection#" null="no" />
</cfstoredproc>

$(document).ready(function(){
        $('#selectbox').change(function() {
            // update my #selection# variable
            $.get("storedProc.cfm", { selection: $(this).val() } );        
      });
    });

答案 2 :(得分:0)

您需要将您的Stored Proc调用放入一个单独的CFM文件中,以供您的jquery调用。您无法引用回到您页面上调用的那个。