2014-09-26 121 views
0

我正在使用Javascript(而不是JQuery)。我试图从使用复选框选择的MySQL数据库中删除记录。删除不会使用AJAX发生。但是,我使用与删除工作正常的相同参数手动调用PHP AJAX删除脚本。但是,当我手动运行AJAX PHP时,即使所有内容位于同一服务器和同一个域上,我的Firefox浏览器也会报告一个COR。PHP AJAX MySQL删除不起作用

这里是HTML,JavaScript和AJAX PHP脚本删除:

这个网站是一个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"; 
} 
?> 
+0

星期五有很多评论。现在他们都走了。为什么? – 2014-09-29 16:00:35

+0

我想说那里没有太多的质量:p有这样的运气吗? – 2014-10-03 20:27:50

回答

0

Firebug控制台以红色显示AJAX呼叫。

萤火显示红色的Ajax调用时,有一个时间间隔服务器错误

这个网站是一个iframe中,如果它的事项:

然而,当我手动运行AJAX PHP我的Firefox浏览器即使所有内容位于同一台服务器和同一个域上,也会报告一个COR。

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

我会说有一个路径错误,产生间隔服务器错误当您尝试需要mysql_connect.php当从浏览器直接调用,这将不会发生,如内嵌框架可能与原始路径搞乱。

事实上,它甚至可能没有到达那里,如果内嵌框架弄乱了你叫

对于SQL注入的问题,了解库MySQLi或PDO。我真的很喜欢pdo的面向对象的方式,这里是一个tutorial for mysql developpers

+0

感谢您的回答。虽然当我在Firebug中右键单击该红色URL并选择在新选项卡中打开时,Firebug将以红色显示AJAX调用,然后该AJAX调用正确执行。这不是说这条路是正确的吗? – 2014-09-26 16:41:58

+0

我必须说它的确表明了这一点。 – 2014-09-26 16:43:45