我使用jQuery AJAX Form插件上傳圖像而不刷新頁面。如果我在圖片標籤中顯示上傳的圖片(將src設置爲上傳的圖片路徑),那就可以了。但是,我無法在畫布元素上繪製上傳的圖片。我其實不知道問題是什麼。將上傳的圖像(使用Ajax)繪製到Canvas
if (isset($_FILES["image"]["name"]) && !empty($_FILES["image"]["name"])) {
$filename = $_FILES["image"]["name"];
$tmpname = $_FILES["image"]["tmp_name"];
$location = "uploads/";
move_uploaded_file($tmpname, $location.$filename);
echo $location.$filename;
} else {}
var canvas = document.getElementById("canv");
var contex = canvas.getContext("2d");
var img = new Image();
img.src = responseText;
img.onload = function(){ contex.putImageData(img, 0, 0); }
上面是我在Ajax過程完成時調用的回調函數(內部)。感謝任何有用的答案。
UPDATE:全碼
<html>
<head>
<script src="jq171.js"></script> <!--jQuery-->
<script src="jqform.js"></script> <!--jQuery ajax Form plugin-->
<script>
$(document).ready(function(){
$("#myform").ajaxForm(function({success: updateSrc}){
});
});
function updateSrc(responseText){
var canvas = document.getElementById("canv");
var contex = canvas.getContext("2d");
var img = new Image();
img.src = responseText;
img.onload = function(){ contex.drawImage(img, 0, 0); }
}
</script>
</head>
<body>
<form id="myform" action="this.php" method="post" enctype="multipart/form-data" >
<canvas id="canv" width="400px" height="400px"></canvas>
<input type="file" name="image"/>
<input type="submit"/>
</form>
</body>
</html>
responseText包含哪些內容? – jazzytomato
它應該包含來自服務器的響應,簡而言之就是上傳的文件路徑。 http://www.malsup.com/jquery/form/#ajaxForm – msharpp
我知道它應該包含什麼,但我要求您打印它實際包含的內容;-)在您的JavaScript回調函數中添加:alert(responseText ); 然後檢查路徑是否正常。 (如果它的相對路徑,那麼它可能是錯誤的,如果你的PHP和JS文件不在同一位置 – jazzytomato