如何使用coldfusion和ajax从数据库中删除一行

时间:2016-09-29 01:52:43

标签: ajax database coldfusion

我在实时删除数据库行时遇到问题。我的意思是在不加载页面的情况下从数据库中删除输出的行。我用coldfusion。我知道最好的方法是使用Ajax,但我对ajax并不好。

这就是页面的样子..

<cfquery datasource="xyz" name="get_it">
    SELECT *
    FROM teachers
</cfquery>

<table>
   <tr>
      <td>Name</td>
      <td>Age</td>
      <td>Manage</td>
  </tr>

      <Cfoutput query="get_it">
   <tr>
      <td>#name#</td>
      <td>#age#</td>
      <td><a href="delete_teacher.cfm?id=#teacherid#" name="del">Delete</a></td>
   </tr>
      </cfoutput>

</table>

=============删除页面==============

  <Cfquery datasource="xyz" name="delete_teacher">
       DELETE 
       FROM teachers
       WHERE teacherid = #id#
  </cfqquery>

我希望在点击删除链接时,它应该删除数据(包括数据库和输出表中的数据)而不离开页面。

感谢。

1 个答案:

答案 0 :(得分:1)

您可以让您的ajax函数返回新行。然后,您只需使用ajax函数的结果(html)替换页面上的表行。

在您的信息页中:

<cfquery datasource="xyz" name="get_it">
SELECT *
FROM teachers
</cfquery>

<table>
    <tr>
        <td>Name</td>
        <td>Age</td>
        <td>Manage</td>
    </tr>
    <tbody id="teachers">
        <Cfoutput query="get_it">
            <tr>
                <td>#name#</td>
                <td>#age#</td>
                <td><a href="delete_teacher.cfm?id=#teacherid#" onclick="doAjax(this.href);">Delete</a></td>
            </tr>
        </cfoutput>
    </tbody>
</table>

ajax调用者,假设jquery:

<script>
function doAjax(thisUrl)
$.get( thisUrl, function( data ) {
    // REPLACE THE TBODY WITH NEW ROWS
    $( "#teachers" ).html( data );
});
return false;
</script>

在你的ajax处理程序中:

<!--- NO WHITESPACE --->
<cfsetting enableCFoutputOnly="Yes">

<!--- DELETE --->
<Cfquery datasource="xyz" name="delete_teacher">
    DELETE 
    FROM teachers
    WHERE teacherid = <cfqueryparam CFSQLType="CF_SQL_INTEGER" value="#url.id#">
</cfqquery>

<!--- REGENERATE --->
<cfquery datasource="xyz" name="get_it">
SELECT *
FROM teachers
</cfquery>
<Cfoutput query="get_it">
    <tr>
        <td>#name#</td>
        <td>#age#</td>
        <td><a href="delete_teacher.cfm?id=#teacherid#" onclick="doAjax(this.href);">Delete</a></td>
    </tr>
</cfoutput>