2014-09-26 2 views
0

저는 이것을 위해 Javascript (JQuery가 아님)를 사용하고 있습니다. 확인란을 사용하여 선택한 MySQL 데이터베이스에서 레코드를 삭제하려고합니다. 삭제는 AJAX를 사용하여 발생하지 않습니다. 그러나, 나는 PHP AJAX 삭제 스크립트를 수동으로 동일한 매개 변수를 사용하여 삭제 작동합니다. 그러나 AJAX PHP를 수동으로 실행하면 모든 서버가 동일한 도메인에 있어도 Firefox 브라우저에서 COR을보고합니다. 여기 PHP AJAX MySQL 삭제가 작동하지 않습니다.

가있는 HTML, 자바 스크립트, 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> 

자바 스크립트 :

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

금요일에 많은 의견이 있었다. 이제 그들은 모두 없어졌습니다. 왜? –

+0

나는 그것들에 너무 많은 품질이 없다고 말할 것입니다 : p는 이것에 어떤 행운이 있습니까? –

답변

0

방화 광 콘솔은 빨간색으로 AJAX 호출을 표시합니다. 간격 서버 오류가있을 때

불을 지르고는 빨간색 아약스 호출을 보여줍니다

가 중요한 경우 HTML은 iframe 내에입니다 :

을 그러나, 나는 수동으로 파이어 폭스 브라우저를 AJAX PHP를 실행할 때 모든 것이 동일한 서버 및 동일한 도메인에 있더라도 COR을보고합니다. 난 당신이 iframe이 원래 경로 덤비는 수 있습니다 예를 들어, 브라우저에서 직접 호출 할 때 발생하지 않습니다 mysql_connect.php을 필요로 할 때 간격 서버 오류가 발생 경로 오류가있을 말하고 싶지만

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

.

iframe이 당신이 SQL 주입 문제에 관해서는

전화로 망쳐 놨 경우 사실, 심지어 거기에 도착하지 않을 수도 있습니다에 대한 mysqli 또는 PDO를 배운다. 나는 pdo의 객체 지향적 인 방법을 정말 좋아한다. 여기에 a가있다. tutorial for mysql developpers

+0

답변 해 주셔서 감사합니다. Firebug는 Firebug 내의 빨간 URL을 마우스 오른쪽 버튼으로 클릭하고 Open New Tab을 선택하면 AJAX 호출이 빨간색으로 표시되지만 AJAX 호출은 올바르게 실행됩니다. 경로가 맞다고 제안하지 않습니까? –

+0

나는 그것을 제안한다고 말해야합니다. –

관련 문제