簡體   English   中英

PHP AJAX MySQL DELETE無法正常工作

[英]PHP AJAX MySQL DELETE not working

我為此使用Javascript(而非JQuery)。 我正在嘗試從MySQL數據庫中刪除使用復選框選中的記錄。 使用AJAX不會發生刪除。 但是,我使用相同的參數手動調用PHP AJAX刪除腳本,刪除工作正常。 但是,當我手動運行AJAX PHP時,即使所有內容都在同一服務器和同一域上,我的Firefox瀏覽器也會報告COR。

這是HTML,Javascript和AJAX PHP刪除腳本:

如果重要,則此html位於iframe中:

<form name='frmDelFiles' method='POST' class='frmFileUpload' onClick='delChkdFiles("files2del")'>
<input type='submit' value='Delete Checked Files' name='delFiles' class='btnSubmit' />
</form>

Javascript:

function delChkdFiles(theCBgrp) {
    var where_stmt = "";
    var names      = "";
    var elements = document.getElementsByName(theCBgrp);

   for (var i = 0, l = elements.length; i < l; i++)
   {
      if (elements[i].checked)
      {
        var response = confirm("Do you consent to delete the " + elements[i].value + " file?\n\nClick OK if Yes, otherwise Cancel.");
        if (response == true) {
            if (where_stmt == "") {
                where_stmt  = "id=" + elements[i].id;
                names       = elements[i].value;
            } else {
                   where_stmt += " OR id=" + elements[i].id;
                   names      += ", " + elements[i].value;
                }
        }
    }
    }

    if (where_stmt == "") {
        alert("Zero files have been selected for deletion.");
    } else {
        xmlhttp=getHTTPObject();
       if (xmlhttp==null) {
            alert ("Your browser does not support AJAX!");
            return;
       }

        var url="/php/del_mysql_rcd.php";
        url=url+"?table=ip_attachments";
        url=url+"&where_stmt="+where_stmt;
        url=url+"&names="+names;
        url=url+"&sid="+Math.random();

        xmlhttp.open("GET",url,true);
        xmlhttp.onreadystatechange = handleShowResponse;
        xmlhttp.send(null);
    }
}

function handleShowResponse() {
   if (xmlhttp.readyState==4) {
      var ajaxStr = xmlhttp.responseText;
      alert(ajaxStr);
   }
}

del_mysql_rcd.php AJAX PHP:

<?php
$table      = $_GET["table"];
$where_stmt = $_GET["where_stmt"];
$names      = $_GET["names"];

require_once ('../php/mysql_connect.php'); // Connect to the db.

$query = "DELETE FROM $table WHERE $where_stmt";
$result = @mysql_query ($query) or die(mysql_error()); // Run the query.

if (mysql_affected_rows() > 0) {
    echo "Successfully deleted $names\n";
} else {
    echo "Failed to delete $names\n";
}
?>

Firebug控制台以紅色顯示AJAX調用。

間隔服務器錯誤時,firebug以紅色顯示ajax調用

如果重要,則此html位於iframe中:

但是,當我手動運行AJAX PHP時,即使所有內容都在同一服務器和同一域上,我的Firefox瀏覽器也會報告COR。

require_once ('../php/mysql_connect.php'); 

我想說這是一個路徑錯誤,當您嘗試要求mysql_connect.php會生成一個間隔服務器錯誤,當直接從瀏覽器直接調用時不會發生,例如,iFrame可能與原始路徑混淆。

實際上,如果iFrame與您打擾,它甚至可能無法到達目的地

至於sql注入問題,請了解mysqli或PDO。 我真的很喜歡pdo的面向對象方式,這是mysql開發人員教程

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM