2017-11-09 15 views
0

jqueryとajaxを使用してページの行とdbのレコードを削除しようとしていますが、それは機能しません。ページの行は正常に削除されますが、PHPファイルは呼び出されません。私はちょうどPHPエラーチェックにエコーステートメントがあり、それはスクリーンに印刷されていません。JQueryはページ行を削除しますが、Ajaxはdbレコードを削除していません

のjsファイル

function deleteLine(a,estimateNum,rowNum){ 
     var $rowcount = $("#desc_table tr").length; 
     if($rowcount <= 2){ 
       alert("Cannot remove all the description lines."); 
       return false; 
     } 
     else{ 
      if (confirm("Are you sure you want to delete?")) { 
      $.ajax({ 
       type: "POST", 
       url: "delete_desc_record.php", 
       data: { estimate_num: estimateNum, row_num: rowNum }, 
       cache: false, 
       success: function(){ 
        a.closest('tr').remove(); 
       } 
      }); 
      } 
      else{ 
      return false; 
      } 
    } 

delete_desc_record.php

<?php 
include 'connect.php'; 
include 'set_variables.php'; 

$estimate_num = isset($_POST['estimate_num']) ? (int) $_post['estimate_num'] : 0; 
$row_num = isset($_POST['row_num']) ? (int) $_post['row_num'] : 0; 

echo 'in delete php file '. $estimate_num .' '. $row_num; 

のindex.php

if(!empty($DESC)){ 
foreach ($DESC as $i => $b) { 
?> 
<tr> 
<td><input name="desc[]" type="text" value="<?php echo $DESC[$i]; ?>"></td> 
<td> <input name="desc_hr[]" type="text" value="<?php echo $DESC_hr[$i]; ?>"</td> 
<td> <input name="desc_rt[]" type="text" value="<?php echo $DESC_rt[$i]; ?>" </td> 
<td><input name="desc_amt[]" type="text" value="<?php echo $DESC_amt[$i]; ?>"></td> 
<td><input type="button" value="X" name="delete" class="btnDelete" onclick="deleteLine(this,<?php echo $estimate_num .','. $i; ?>)"></td> 
    </tr> 
    <?php 
    } 
} 
+0

ヒント:「出力」を表示するには、デバッガコンソールの[ネットワーク]タブで確認してください。または、あなたは 'success'コールバックのデータを取得してコンソールに出力することができます:) – Eleazan

答えて

0

あなたが開発ツールのいずれかのコンソールのエラーを持っていますか?

したがって、SQLインジェクションを防止するためにプリペアドステートメントを読み、DELETEステートメントが間違っている必要があります。アスタリスクを削除します。

更新 SQLクエリをチェックするだけで、どこに$ cust_idが設定されているかわかりません。

あなたのインクルードファイルをチェックすると、スクリプト全体が壊れている可能性があります。彼らがうまくいくように見えたら、ファイルの一番上にecho文を書いて、ページを更新してください。画面に何か印刷されますか?はいの場合は、エコーラインを下に移動し、エコーされたテキストがなくなるまでページをリフレッシュする手順を繰り返します。

PHPエラーが発生した場合は、エラーが表示されるはずです。php.iniファイルでdisplay_errorsが1に設定されていることを確認してください。

+0

いいえ、エラーはなく、成功関数に落ちてページの行を削除します。 delete_desc_record.phpページでエコーしないでください。 – jd0117

+0

PHPエラーがオンになっていますか?これはあなたを助けるかもしれません。 error_reporting(E_ALL); ini_set( 'display_errors'、1) –

+0

Benありがとうございました。私はそれらをオンにしましたが、今までのところエラーは発生していません。そのDeleteステートメントは間違って間違っている...しかし、私はSQLインジェクション防止について確かに調べるだろう。 – jd0117

3

あなたはestimate_numrow_numをPHPを期待しているが、あなたはそれをどのような場合に無効な構文です

data: estimateNum, rowNum, 

を与えるためにしようとしています。その行を次のように変更してください。

data: { estimate_num: estimateNum, row_num: rowNum }, 
+0

ありがとうTaplar ... ok、私はindex.phpのPHP変数estimate_numとrow_numを使用していますが、jsファイルに渡すと、変数を別の名前と呼ぶことができます。だから私はあなたの提案を試みました、そして、それはまだdelete_desc_record.phpからの行をエコーし​​ていません。万が一何か間違っているのを見ますか? – jd0117

+0

あなたがスクリプトを入手していることを確認するには、スクリプトの入力をチェックする必要があります。あなたがいれば、それはあなたがSQLが正しく構築されているかどうかの質問になります。私は検証の方法がありません。 @ jd0117 – Taplar

+0

はいスクリプトが入力を正しく受け取っていることを確認しました(アラートを使用)。私はちょうどSQL文が正しいかどうかは関係ありませんので、私のPHPページでエコーをやっています。 PHPページが呼び出されるように見えないので、私のAjaxに何か問題があるように感じます。 – jd0117

関連する問題