2013-01-03 87 views
0

有可能按鈕子php頁面。我想使用該值提交按鈕的值和刪除記錄。 Ajaxz代碼Ajax使用PHP和mysql提交

$('#product-table td #delete').live("click", function() { 
       var doDelete = confirm('Are you sure you want to delete this record?'); 
       deleteLinkObj = $(this); 

       if (doDelete) { 


        var id = $(this).attr('accesskey'); 
     $("#deleteid").val(id); 
     $.ajax({ 
        url: "purchase.php", 
        data: {deleteid:id}, 
        dataType: 'html', 
        success: function() { 

        } 
       }); 


       } 
       else { return false; } 
       }); 

在PHP我想使用deleteid的價值,但其不來 PHP代碼

if(@$_POST['deleteid']!="") 
        { 
        $sql="delete from purchasedetails where purchaseid='".$_POST['deleteid']."'"; 
        if(!mysql_query($sql)) 
          { 
          die('Error: ' . mysql_error()); 
          } 
          else 
          { 
          $msg="Data is deleted"; 
          } 
        } 

我已經試過usinng isset($ _ POST [ 'deleteid'])然後也是其示值誤差

+3

** WARNING **你的代碼中包含[SQL注入漏洞(http://en.wikipedia.org/wiki/SQL_injection) - 你逝去的原始的,未經過濾,未經驗證的用戶直接輸入到一個SQL字符串。 SQL注入[非常容易修復](http://stackoverflow.com/q/60174/168868)。考慮[切換到PDO](http://php.net/book.pdo)或[mysqli](http://php.net/book.mysqli),以便您可以使用[帶有參數化查詢的預準備語句](http: //en.wikipedia.org/wiki/Prepared_statement)。還有,老兄,停止使用'@'運算符。不要隱藏錯誤,*修復*錯誤。 – Charles

+0

...另外,發佈您收到的錯誤.... – 2013-01-03 08:59:20

+0

沒有顯示錯誤。在確認要刪除記錄後,它不刪除記錄。'@'用於隱藏警告消息'變量未初始化'。 – Dharmender

回答

1

在你的Ajax調用你沒有請求方法設置爲POST,因此它會默認爲GET,這就是爲什麼你的帖子變種是永遠存在:

$.ajax({ 
       type: 'POST', 
       url: "purchase.php", 
       data: {deleteid:id}, 
       dataType: 'html', 
       success: function() { 

       } 
      }); 

由於可以快速修復您的SQL注入漏洞,您可以將該ID作爲int,但應考慮升級到PDO或MySQLi,因爲您正在使用的庫已棄用。

$sql="delete from purchasedetails where purchaseid='".(int)$_POST['deleteid']."'"; 

存儲您purchaseid作爲元素ACCESSKEY是不是最好的地方,這將是一個data-myid屬性更好,這樣你就可以$(this).data('myid')訪問它。 !

+0

我已經嘗試過使用POST,但問題仍然存在。值未提交 – Dharmender

+0

將ID從accesskey移出並驗證它存在於HTML(view-> source)中。然後在Firebug或Chrome開發工具中查看請求以查看發送的內容。 – MrCode

+0

使用了data-myid,然後在它已經工作的delete命令中完成了對id的鑄造。謝謝。 – Dharmender

1

默認情況下,$就採取類型爲GET,因此你需要在你的代碼定義類型

你可以嘗試這樣$.ajax syntax-

$.ajax({ 
       url: "purchase.php", 
       data: $("#deleteid").val(id), 
       type: POST 
       dataType: 'html', 
       success: function() { 
+0

嘗試使用POSt但仍未提交該值。 – Dharmender