2011-06-23 89 views
0

我有这种形式上传xml文件到服务器,我使用fiddler来监视每个req和resp。因此,服务器发送了我一个小的XML,我想收到它在我的JavaScript作为XMLHttpRequest使它发生如何在客户端接收响应?

注:我上传文件,以便enctype="multipart/form-data"

var client; 
var url_action = "/csm/create.action"; 
var dataString; 

if (window.XMLHttpRequest) { 
    client = new XMLHttpRequest(); 
} else { 
    client = new ActiveXObject("Microsoft.XMLHTTP"); 
} 
if (client.readyState == 4 && client.status == 200) { 
    alert(client.responseTest); 
} 
client.open("POST", url_action, true); 
client.setRequestHeader("enctype", "multipart/form-data"); 
client.send(); 

我的问题是如何能我从服务器端收到JS变量的响应。在上面的代码XMLHttpRequest我不认为我可以发送多部分请求(文件上传)。所以任何替代方案都是值得欢迎无论哪种解决方案都能为我提供一个好的答案。 这是我正在做的,提交表格。谢谢:)

var url_action="/csm/create.action"; 
$('#mainForm').attr('action', url_action); 
$('#mainForm').submit(); 

与解决方案

$(data).find('com\\.abc\\.db\\.ConfigInfo').each(function(){ 
     cfgid=$(this).find('cfgId').text(); 
     cfgname=$(this).find('cfgName').text(); 
     filename=$(this).find('fileName').text(); 
     timestamp=$(this).find('updateDate').text(); 

     alert(cfgid+", "+cfgname+", "+filename+", "+timestamp); 

     }); 

回答

1

更新您有jQuery的可用,因此永远不要创建XHR对象手动。 除此之外,您不能使用AJAX进行文件上传,除非您不关心与某些浏览器的兼容性。

最后但并非最不重要的一点,如果表单中有file输入,您希望使用jQuery form plugin,它将自动回退到隐藏的iframe和常规表单。 请注意,您需要在<textarea></textarea>中包装您的JSON响应才能正常工作。详情请参阅http://jquery.malsup.com/form/#file-upload。如果你想返回XML,你不需要包装它 - 它应该工作正常,没有任何服务器端的变化。

+0

我使用了插件,我的警报给出了'谢谢你的评论![对象XMLDocument]'看到我更新的问题 – Ricky

+0

谢谢我解析了xml,它很好用:) – Ricky

相关问题