2012-11-06 171 views
1

我正在試圖制定一個方案,其中Ajax調用upload.php並且upload.php將在消息中返回成功或失敗。我試圖在PHP腳本中使用echo「successs」,希望xhr.responseText能夠收到消息。但是alert(xhr.responseText)是一個空行。然後它發生在我身上,xhr.responseText只能使用GET而不使用POST?如果是這樣,我怎麼才能讓它的PHP腳本可以返回一個自定義消息?我不想使用HTTP狀態碼......我寧願學習如何儘可能地做自定義消息。PHP腳本返回AJAX的responseText從POST?想用AJAX POST返回消息

沒有jQuery,請。

<?php 
$tmp_name = $_FILES['file1']['tmp_name']; 
$path = "/trunk"; 
$name = $path . DIRECTORY_SEPARATOR . $_FILES['file1']['name']; 
$success = move_uploaded_file($tmp_name, $name); 
if ($success) { 
    echo "good"; 
} else { 
    echo "bad"; 
} 
?> 
} 

function uploadPHP() { 
    var xhr = new XMLHttpRequest(), 
     form = document.getElementById("uploadForm"); 

    xhr.open("POST", "php/upload.php", true); 
    xhr.send(new FormData(form)); 
    alert(xhr.responseText); 
} 

回答

0

我會考慮使用以下:

xhr.onreadystatechange = function() { 
     if(xhr.status==200 && xhr.readyState == 4) { 
      alert(xhr.responseText); 
     } 
    } 

既然你做一個文件上傳,響應是要採取一些時間來產生。每當請求的狀態發生變化時,該函數就會運行,並且只有當所有事情都已完成時纔會響應。

+0

謝謝,但這不是我正在尋找的。我想向客戶端發回一個自定義消息,現在無論現在xhr.responseText顯示一個空行......所以根問題仍然存在。另外,我只在本地網絡服務器上使用300kb等小文件...所以時間很短。 – dman

+0

我不確定你的意思,XHR調用將返回你的腳本將打印到屏幕上的任何內容。我不確定你爲什麼要避免使用狀態碼。所有的狀態代碼都在檢查以確保您的請求已成功完成,然後再嘗試在腳本中打印消息。 – frosty