2012-03-06 57 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。在我的情况下,我得到文件类型错误,所以给了一个线索。