我在实时删除数据库行时遇到问题。我的意思是在不加载页面的情况下从数据库中删除输出的行。我用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>
我希望在点击删除链接时,它应该删除数据(包括数据库和输出表中的数据)而不离开页面。
感谢。
答案 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>