PHP没有';t似乎正在处理要发布到MySQL的脚本

PHP没有';t似乎正在处理要发布到MySQL的脚本,php,jquery,mysql,ajax,Php,Jquery,Mysql,Ajax,我正在使用html5画布捕获签名并将其存储在MySQL中。除了保存签名并将其发送到MySQL的部分之外,脚本中的所有内容都正常工作。 我对AJAX一无所知,所以我正在学习我在书中读到的内容,看看教程,并从这里获得帮助 因此,在Firefox控制台中,当我单击save signature时,我可以看到脚本显示了它应该访问的post.php文件,并显示了一个200 ok通知,但什么也没有发生,它没有在MySQL中发布(这并不让我感到惊讶,因为我确信我的代码是错误的),并且我没有看到任何错误 我想要完

我正在使用html5画布捕获签名并将其存储在MySQL中。除了保存签名并将其发送到MySQL的部分之外,脚本中的所有内容都正常工作。 我对AJAX一无所知,所以我正在学习我在书中读到的内容,看看教程,并从这里获得帮助

因此,在Firefox控制台中,当我单击save signature时,我可以看到脚本显示了它应该访问的post.php文件,并显示了一个200 ok通知,但什么也没有发生,它没有在MySQL中发布(这并不让我感到惊讶,因为我确信我的代码是错误的),并且我没有看到任何错误

我想要完成的是将签名图像上传到服务器上的一个文件夹中,并将图像的路径保存在MySQL中。由于不熟悉JavaScript、Jquery和Ajax,我对如何使其发挥作用感到困惑

以下是jquery:

$(document).ready(function () {
/** Set Canvas Size **/
var canvasWidth = 400;
var canvasHeight = 75;

/** IE SUPPORT **/
var canvasDiv = document.getElementById('signaturePad');
canvas = document.createElement('canvas');
canvas.setAttribute('width', canvasWidth);
canvas.setAttribute('height', canvasHeight);
canvas.setAttribute('id', 'canvas');
canvasDiv.appendChild(canvas);
if (typeof G_vmlCanvasManager != 'undefined') {
    canvas = G_vmlCanvasManager.initElement(canvas);
}
var context = canvas.getContext("2d");

var clickX = new Array();
var clickY = new Array();
var clickDrag = new Array();
var paint;

/** Redraw the Canvas **/
function redraw() {
    canvas.width = canvas.width; // Clears the canvas

    context.strokeStyle = "#000000";
    context.lineJoin = "miter";
    context.lineWidth = 2;

    for (var i = 0; i < clickX.length; i++) {
        context.beginPath();
        if (clickDrag[i] && i) {
            context.moveTo(clickX[i - 1], clickY[i - 1]);
        } else {
            context.moveTo(clickX[i] - 1, clickY[i]);
        }
        context.lineTo(clickX[i], clickY[i]);
        context.closePath();
        context.stroke();
    }
}

/** Save Canvas **/
$("#saveSig").click(function saveSig() {
    //encode URI
    var sigData = encodeURIComponent(canvas.toDataURL("image/png"));
$("#imgData").html('Thank you! Your signature was saved');
    var ajax = XMLHttpRequest();
    ajax.open("POST", 'post.php');
    ajax.setRequestHeader('Content-Type', 'application/upload');
    ajax.send(sigData);
   // $('#debug').html(sigData);
});

/** Clear Canvas **/
$('#clearSig').click(
    function clearSig() {
        clickX = new Array();
        clickY = new Array();
        clickDrag = new Array();
        context.clearRect(0, 0, canvas.width, canvas.height);
});

/**Draw when moving over Canvas **/
$('#signaturePad').mousemove(function (e) {
    if (paint) {
        addClick(e.pageX - this.offsetLeft, e.pageY - this.offsetTop, true);
        redraw();
    }
});

/**Stop Drawing on Mouseup **/
$('#signaturePad').mouseup(function (e) {
    paint = false;
});

/** Starting a Click **/
function addClick(x, y, dragging) {
    clickX.push(x);
    clickY.push(y);
    clickDrag.push(dragging);
}

$('#signaturePad').mousedown(function (e) {
    var mouseX = e.pageX - this.offsetLeft;
    var mouseY = e.pageY - this.offsetTop;

    paint = true;
    addClick(e.pageX - this.offsetLeft, e.pageY - this.offsetTop);
    redraw();
});

});
$(文档).ready(函数(){
/**设置画布大小**/
var canvasWidth=400;
var canvasHeight=75;
/**IE支持**/
var canvasDiv=document.getElementById('signaturePad');
canvas=document.createElement('canvas');
canvas.setAttribute('width',canvasWidth);
canvas.setAttribute('height',canvasHeight);
setAttribute('id','canvas');
canvasDiv.appendChild(canvas);
if(G_vmlCanvasManager的类型!=“未定义”){
canvas=G_vmlCanvasManager.initElement(canvas);
}
var context=canvas.getContext(“2d”);
var clickX=新数组();
var clickY=新数组();
var clickDrag=新数组();
var涂料;
/**重新绘制画布**/
函数重画(){
canvas.width=canvas.width;//清除画布
context.strokeStyle=“#000000”;
context.lineJoin=“斜接”;
context.lineWidth=2;
对于(变量i=0;i
这里是PHP:我也没有在下面写PHP代码,它是整个签名板的一部分,所以我确信它是不正确的

<?php
session_start();
if (isset($GLOBALS["HTTP_RAW_POST_DATA"]))
{
$session_id = $_SERVER['REMOTE_ADDR'];
// Get the data
$imageData=$GLOBALS['HTTP_RAW_POST_DATA'];

// Remove the headers (data:,) part.
// A real application should use them according to needs such as to check image type
$filteredData=substr($imageData, strpos($imageData, ",")+1);

// Need to decode before saving since the data we received is already base64 encoded
$unencodedData=base64_decode($filteredData);

//echo "unencodedData".$unencodedData;
$imageName = "sign_" . rand(5,1000) . rand(1, 10) . rand(10000, 150000) . rand(1500,   100000000) . ".png";
//Set the absolute path to your folder (i.e. /usr/home/your-domain/your-folder/
$filepath = "xampp/htdocs/alpha/site7/images/" . $imageName;

$fp = fopen("$filepath", 'wb' );
fwrite( $fp, $unencodedData);
fclose( $fp );

//Connect to a mySQL database and store the user's information so you can link to it later
$link = mysql_connect('localhost','root', 'password') OR DIE(mysql_error);
mysql_select_db("customer", $link);
mysql_query("INSERT INTO 'signature' ('session', 'image_location') VALUES       ('$session_id', '$imageName')") OR DIE(mysql_error());
mysql_close($link);
}
?>

似乎我在回答我自己的问题,我已经找出了fopen错误是什么,我没有使用绝对路径,所以在路径开始之前添加a/清除了所有问题,除了最后一个错误:

您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,了解使用“签名”(“会话”、“图像位置”)值附近的正确语法('127.0.0.1','Sign11814198867'在第1行

似乎我在回答我自己的问题,我已经找出了fopen错误是什么,我没有使用绝对路径,因此在路径开始之前添加/清除了除此最后一个错误以外的所有错误:
您的SQL语法有错误;请查看与您的MySQL服务器版本相对应的手册,以了解使用接近“签名”(“会话”,“图像位置”)值('127.0.0.1”,“签名11814198867'在第1行)的正确语法。

一些基本调试会走很长的路,只是一个旁注……您已经加载了jquery…为什么不使用$.ajax()JqueryYou提供的函数忘记了
session_start()
php
文件的顶部。@Yogeshuthar忘记删除会话部分,此时我不想使用会话,我只是试图将签名图像上载到服务器并将其路径存储在MySQL中。我只是想弄清楚这是如何工作的,以便我能够获得基本的理解。也就是说,即使使用会话\u start()在顶部,它仍然不会发布到MySQL@KyleK这就是我寻求帮助的原因,我对这一切都很陌生,我正在寻找一些关于如何做到这一点的指导。我阅读和观看的所有内容都不够清晰,无法让我弄清楚这个脚本是如何发布图像的。如果它像将图像保存到文件夹的路径那样简单,我可以我明白了,但显然不是。一些基本的调试会走很长的路,只是一个旁注……您已经加载了jquery……为什么不使用jquery提供的$.ajax()函数呢您忘记了
session_start()
php
文件的顶部。@Yogeshuthar忘记删除会话部分,此时我不想使用会话,我只是试图将签名图像上载到服务器并将其路径存储在MySQL中。我只是想弄清楚这是如何工作的,以便我能够获得基本的理解。也就是说,即使使用会话\u start()在顶部,它仍然不会发布到MySQL@KyleK这就是我寻求帮助的原因,我对这一切都是新手,我正在寻找一些关于如何帮助的指导
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

<head>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
<title>Signature Pad</title>

<!-- The Signature Pad -->
<script type ="text/javascript" src="jquery.min.js"></script>
<script type="text/javascript" src="signature-pad.js"></script>
</head>
<body>
<center>
<fieldset style="width: 435px">
    <br/>
    <br/>
    <div id="signaturePad" style="border: 1px solid #ccc; height: 55px; width: 400px;"></div>
    <br/>
    <button id="clearSig" type="button">Clear Signature</button>&nbsp;
    <button id="saveSig" type="button">Save Signature</button>
    <div id="imgData"></div>
    <div 
    <br/>
    <br/>
</fieldset>
</center>
<div id="debug"></div>
</body>
</html>