2012-03-06 60 views
1

AJAX文件上傳的返回值

http://www.phpletter.com/Our-Projects/AjaxFileUpload/

我使用此代碼使用這個AJAX文件上傳:

function ajaxFileUpload() { 
    $('input[type=file]').each(function() { 
     if ($(this).val() == "") { 
      return true; 
     } else { 
      $.ajaxFileUpload({ 
       url: 'upload.php', 
       secureuri: false, 
       fileElementId: this.id, 
       success: function (data, status) { 
        $('body').html(data); 
       }, 
      }) 
     } 
    }); 
    return false; 
} 

我想身體的HTML變成什麼我從上傳回聲出。 php就像我們通常使用$ .ajax所做的那樣,不幸的是,當我從upload.php中回顯出某些東西時,即使它只是一個簡單的字符串,$('body')的html變成空白。沒有返回。誰能幫忙?

+1

空白響應通常表示500內部服務器錯誤。檢查你的錯誤日誌並使用類似Firebug的東西來檢查你的ajax調用的響應代碼和響應數據。 – MrCode 2012-03-06 07:37:29

+0

我觀察到的一件事是,當我做alert(data)時,它返回一個HTML對象。在螢火蟲中沒有記錄錯誤。我試着把這個插件的錯誤函數放進去,錯誤也沒有引發。 – 2012-03-06 07:39:42

回答

0

使用$('body').html(data.msg);

+0

已經嘗試過。沒有工作:(我有一個$ msg ='msg'; echo $ msg在我的upload.php中,但沒有任何工作 – 2012-03-06 07:48:34

+0

響應必須是json: 'echo json_encode(array('msg'=> $ msg ));' – Dragos 2012-03-06 07:59:17

0

從看你鏈接到的網站,它返回一個對象,而不是一個字符串,它是您要插入body什麼。

success預計data是一個對象,如果您從upload.php回顯字符串,那麼它不會是一個對象。嘗試建立一個JSON對象,並呼應的是:

$out = new stdClass; 
$out->error = ''; 
$out->msg = 'this is the message returned'; 

echo json_encode($out); 
exit(); 

success JavaScript部分嘗試data.msg

+0

已經嘗試過,當我嘗試alert(data.msg)時;它顯示未定義的,如果我嘗試body.html(data.msg),它什麼都不會做。 – 2012-03-06 07:52:51

+0

我已經更新了答案,再看一下 – MrCode 2012-03-06 07:54:59

+0

仍然不能工作先生:( – 2012-03-06 07:59:40

0

我得到同樣的問題,並遇到此線程。那麼,這裏的問題仍然沒有答案。我發現瞭解決方案 - 在ajax調用中,我們還需要傳遞響應的dataType。它可能是「html」,「JSON」等。因此,如果您遇到類似的問題,請嘗試傳遞dataType。在我的情況下,我得到文件類型錯誤,所以給了一個線索。