2017-05-19 97 views
1

我的ajax請求將文件放入目錄中。
但是我沒有收到PHP文件的迴應。AJAX未收到PHP響應

我使用警報來確定是否收到回覆。

任何幫助將不勝感激。

function doodleSave() { 
    var canvas = document.getElementById("doodle-canvas"); 
    var canvasData = canvas.toDataURL("image/png"); 
    $.ajax({ 
    url:'test.php', 
    type:'POST', 
    data:{ data:canvasData }, 
    success: function(response){ 
     alert(response); 
     //echo what the server sent back... 
    } 
    }); 
} 


<?php 

/* AUTOMATED VARIABLES */ 
$upload_dir = "images/external/doodles/"; 
$url   = md5(uniqid(rand(), true)); 
$unique_post_id = md5(uniqid(rand(), true)); 
$timestamp  = time(); 
$nature   = "doodle"; 
$imageUrl  = $upload_dir.$url.'.png'; 

$img = $_POST['data']; 
$img = substr($img,strpos($img,",")+1); 
$data = base64_decode($img); 
$file = $upload_dir . $url . ".png"; 
$success = file_put_contents($file, $data); 


if(!$success) { 

    exit('unable to upload'); // Prints success and exit the script 

} else { 

    exit($file); // Prints success and exit the script 

} 

?> 

UPDATE:

我的成功和錯誤Ajax和它作爲一個錯誤:

function doodleSave() { 
    var canvas = document.getElementById("doodle-canvas"); 
    var canvasData = canvas.toDataURL("image/png"); 
    $.ajax({ 
    url:'test.php', 
    type:'POST', 
    data:{ data:canvasData }, 
     success: function(){ 
     alert('success'); 
     }, 
     error: function(){ 
     alert('failure'); 
     } 
    }); 
} 
+0

如果您查看網絡控制檯中的請求,XHR請求會獲得哪些http響應代碼?我不知道exit()會如何影響請求的響應代碼,所以它可能會返回一個錯誤響應代碼。在這種情況下,您可能希望使用'header()'指定請求響應代碼,而不是使用exit()。例如'header(「HTTP/1.0 200 Ok」)或'header(「HTTP/1.0 400 Bad Request」)' – Taplar

+0

我查看了XHR響應,它們都是我的通知檢查器,每10秒運行一次。這個上傳腳本沒有任何內容 – Sam

+0

但是當我按下doodleSave按鈕 – Sam

回答

1

使用json_encode用AJAX將數據發送回。

<?php 

/* AUTOMATED VARIABLES */ 
$upload_dir = "images/external/doodles/"; 
$url   = md5(uniqid(rand(), true)); 
$unique_post_id = md5(uniqid(rand(), true)); 
$timestamp  = time(); 
$nature   = "doodle"; 
$imageUrl  = $upload_dir.$url.'.png'; 

$img = $_POST['data']; 
$img = substr($img,strpos($img,",")+1); 
$data = base64_decode($img); 
$file = $upload_dir . $url . ".png"; 
$success = file_put_contents($file, $data); 
if(!$success) { 

    echo json_encode(['filename' => false]); 
    exit(); // Prints success and exit the script 

} else { 

    echo json_encode(['filename' => $file]); 
    exit(); 
} 

?> 

在你的AJAX爲此

function doodleSave() { 
    var canvas = document.getElementById("doodle-canvas"); 
    var canvasData = canvas.toDataURL("image/png"); 
    $.ajax({ 
     url:'test.php', 
     type:'POST', 
     data:{ data:canvasData }, 
     success: function(response){ 
      var data = JSON.parse(response); 
      if (data.filename != false) { 
       alert(data.filename); 
      }else { 
       alert('unable to upload'); 
      } 
     }, 
     error: function(){ 
      alert('failure'); 
     } 
    }); 
} 

您還可以使用$.post()這是$.ajax()POST請求的簡寫。

function doodleSave() { 
    var canvas = document.getElementById("doodle-canvas"); 
    var canvasData = canvas.toDataURL("image/png"); 

    $.post('test.php', {data: canvasData}, function (response) { 
     var data = JSON.parse(response); 
     if (data.filename != false) { 
      alert(data.filename); 
     } else { 
      alert('unable to upload'); 
     } 
    }) 
} 
+0

我已經做了這個單詞,我沒有得到任何警報。我已經檢查過控制檯,它響應200 – Sam

+0

是你的PHP文件'test.php'? – julekgwa

+0

我正在使用整個http://www.website.etc。只是將它改爲名稱和擴展名,它工作正常!謝謝 – Sam

0

您需要替換所有出現帶加號(+)的空格。

您的代碼與修復:

<?php 

/* AUTOMATED VARIABLES */ 
$upload_dir = "images/external/doodles/"; 
$url   = md5(uniqid(rand(), true)); 
$unique_post_id = md5(uniqid(rand(), true)); 
$timestamp  = time(); 
$nature   = "doodle"; 
$imageUrl  = $upload_dir.$url.'.png'; 

$img = $_POST['data']; 
$img = substr($img,strpos($img,",")+1); 
$img = str_replace(' ', '+', $img); // Here is a fix 
$data = base64_decode($img); 
$file = $upload_dir . $url . ".png"; 
$success = file_put_contents($file, $data); 


if(!$success) { 

    exit('unable to upload'); // Prints success and exit the script 

} else { 

    exit($file); // Prints success and exit the script 

} 

?> 
+0

仍然沒有收到$文件變量的響應 – Sam

+0

@Sam圖像將被上傳並保存成功? –

+0

它上傳成功,但我需要返回的位置返回到AJAX – Sam