2016-09-29 4 views
0

データベース行をリアルタイムで削除する際に問題があります。私は、ページをロードせずにデータベースから出力された行を削除することを意味します。私はcoldfusionを使用します。そして、私はAjaxを使うのが最善の方法だと知っていますが、私はajaxでうまくいかないのです。coldfusionとajaxでデータベースから行を削除する方法

これは、どのようにページのルックのような.. ============= DELETINGページ

<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> 

私は、削除リンクがクリックされたときに、それがページを離れることなく(データベースとoutputedテーブルの両方)のデータを削除する必要がありますしたいです。

ありがとうございました。

+2

コンポーネントを作成し、AJAXを使用して、そのコンポーネントを呼び出し、ページから行を削除します。 –

+2

また、ajax呼び出しを行う場合は、 'cfqueryparam'を使用する必要があります。そうしないと、クエリを簡単に操作できます。 –

+0

idをdelに渡して、そのidのonclick関数を作成し、jqueryでajaxを使用します。次に、コンポーネントを作成し、delIdサービスを作成します。ここで、delete quaryと入力します。成功すると成功メッセージが表示されます。 –

答えて

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のを想定して:あなたのAJAXハンドラで

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

を:

<!--- 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> 
関連する問題