如何在客户端收到回复?

时间:2011-06-23 07:22:45

标签: javascript jquery html xmlhttprequest

我有这个表单将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 个答案:

答案 0 :(得分:1)

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

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