【问题标题】:How can i delete a row from the database with coldfusion and ajax如何使用coldfusion和ajax从数据库中删除一行
【发布时间】:2016-09-29 01:52:43
【问题描述】:

我在实时删除数据库行时遇到问题。我的意思是在不加载页面的情况下从数据库中删除输出的行。我用冷融合。而且我知道最好的方法是使用 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>

我希望当单击删除链接时,它应该在不离开页面的情况下删除数据(数据库和输出表中的数据)。

谢谢。

【问题讨论】:

  • 创建一个组件,使用 ajax 调用该组件,从页面中删除该行。
  • 另外,如果您正在进行 ajax 调用,则必须使用 cfqueryparam,否则您的查询很容易被操纵。
  • 将 id 赋予 del 然后为该 id 创建 onclick 函数并在 jquery 中使用 ajax。然后创建组件并创建 delId 服务,您将在其中键入删除 quary 并成功显示成功消息。
  • 要从视图文件中删除,您必须调用表视图,这意味着您必须调用查询以获取更新的数据表。
  • 我不太了解 ajax,但是在您从数据库中删除项目后,肯定有一种方法可以通过 ajax 删除表行,而不是重做查询并重新显示整张桌子?但也许不是...... :)

标签: ajax database coldfusion


【解决方案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>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-13
    • 2011-02-07
    • 2013-04-14
    • 2018-02-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多