我有这个表单将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);
});
答案 0 :(得分:1)
你有jQuery可用,所以不要手动创建XHR对象。 除此之外,您不能使用AJAX进行文件上传,除非您不关心与某些浏览器的兼容性。
最后但并非最不重要的一点是,如果表单中有file
输入,您希望使用jQuery form plugin自动回退到隐藏的iframe和常规表单。
请注意,您需要在<textarea></textarea>
中包装JSON响应,以使其正常工作。有关详细信息,请参阅http://jquery.malsup.com/form/#file-upload。如果你想返回XML,你不需要包装它 - 它应该可以正常工作而不需要任何服务器端更改。