2012-05-10 12 views
2

AJAX를 사용하여 POST 요청에 약간의 문제가 있습니다. 데이터가 데이터베이스에 저장되지 않는 것 같습니다. POST 대신 GET을 사용하면 효과적 이었지만 문제는 페이지의 캔바스에서 imagedata이기 때문에 엄청난 양의 데이터를 전송한다는 것입니다. 나는 송신되기 전에 그것이 실제로 정확한지를 확인하기 위해 보내지는 데이터의 크기를 출력하려고 시도했다. (약 10500 문자들이었다).AJAX 요청이 작동하지 않습니다 (POST)

if(type == "DrawingData" && Drawer) 
{ 
    var CanvasData = canvas.toDataURL("image/png"); 
    var url = "DB_Com.php"; 
    var params = "DrawingData="+CanvasData; 

    xmlhttp.open("POST", url, true); 

    xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); 
    xmlhttp.setRequestHeader("Content-length", params.length); 
    xmlhttp.setRequestHeader("Connection", "close"); 

    xmlhttp.send(params); 
} 

그리고 여기에 PHP 코드입니다 :

if(isset($_POST['DrawingData'])) 
{ 
    $Image = mysql_real_escape_string($_POST['DrawingData']); 

    $query = "UPDATE BlackboardDrawing SET Data = '$Image'"; 
    mysql_query($query) or die(mysql_error()); 
} 

이 어떤 도움을 매우 높이 평가되고있다는

다음은 자바 스크립트/AJAX 코드입니다. 감사합니다.

+0

"데이터의 엄청난 양"의 문제는 무엇인가 :

if(type == "DrawingData" && Drawer) { var CanvasData = canvas.toDataURL("image/png"); var url = "DB_Com.php"; var rowid = 'your_row_id'; var params = "DrawingData="+CanvasData+"rowid="+rowid; xmlhttp.open("POST", url, true); xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); xmlhttp.setRequestHeader("Content-length", params.length); xmlhttp.setRequestHeader("Connection", "close"); xmlhttp.send(params); } 

그리고 당신의 PHP 스크립트를 변경? "GET 한도"에 빠졌다는 것을 말하지 마십시오 ... – Shikiryu

+1

사실 저는 이것이 PHP POST 한계라고 생각합니다. http://www.php.net/manual/en/ini.core.php#ini.post-max-size. Firebug for Firefox로 Ajax 요청이 리턴하는 것을 확인하십시오. – talereader

+0

@Shikiryu GET 한도 오류가 있습니까? 어쨌든 오버라이드하거나 크기를 변경 하시겠습니까? – Araw

답변

0

Ajax는 정상적으로 보이지만 업데이트 할 행 ID를 POST해야합니다. :

if(isset($_POST['DrawingData'])) 
{ 
    $Image = mysql_real_escape_string($_POST['DrawingData']); 
    $rowid = (int)$_POST['rowid']; 
    $query = "UPDATE BlackboardDrawing SET Data = '$Image' WHERE id='$rowid'"; 
    mysql_query($query) or die(mysql_error()); 
} 
관련 문제