【问题标题】:How to send array from servlet and receive in HTML jquery?如何从 servlet 发送数组并在 HTML jquery 中接收?
【发布时间】:2011-04-21 06:43:12
【问题描述】:

我正在使用 dom 解析上传的 XML 文件,生成字符串,其中 hostname 和 osname 被制成用, 分隔符分隔的字符串。 s 是带有此字符串的变量,我使用 response.getWriter 对象 obj 将其发送回 HTML。但不是打印它,例如:Windows,Abhishek 我想用分隔符, 分割它。有人可以告诉我如何在 jQuery 或 JS 中接收此字符串然后将其拆分为两个字符串的示例代码吗?

try {
    out.println("Using Commons File Upload");
    List items = uploadHandler.parseRequest(request);
    Iterator itr = items.iterator();
    String str=null;
    while(itr.hasNext()) {
        FileItem item = (FileItem) itr.next();

        if(item.isFormField()) {

            /*out.println("Form Input Name = "+item.getFieldName()+", Form Input Value = "+item.getString());*/
        } else {
            /*out.println("Field Name = "+item.getFieldName()+
                ", File Name = "+item.getName()+
                ", Content type = "+item.getContentType()+
                ", File Size = "+item.getSize());   */              
            File file = new File(destinationDir,item.getName());

            item.write(file);

            str=item.getName();

            try {
                DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
                DocumentBuilder db = dbf.newDocumentBuilder();
                File xmlFile = new File(destinationDir,str);

                if (file.exists()) {
                    Document doc = db.parse(xmlFile);
                    Element docEle = doc.getDocumentElement();

                    NodeList csmList = docEle.getElementsByTagName("system");

                    if (csmList != null && csmList.getLength() > 0) {
                        for (int i = 0; i < csmList.getLength(); i++) {

                            Node node = csmList.item(i);

                            if (node.getNodeType() == Node.ELEMENT_NODE) {

                                Element e = (Element) node;
                                NodeList nodeList = e.getElementsByTagName("hostname");
                                s=nodeList.item(0).getChildNodes().item(0).getNodeValue();
                                //System.out.println("HOSTNAME: "+ nodeList.item(0).getChildNodes().item(0).getNodeValue());

                                nodeList = e.getElementsByTagName("osname");
                                s+=","+nodeList.item(0).getChildNodes().item(0).getNodeValue();
                                //System.out.println("OSNAME: " + nodeList.item(0).getChildNodes().item(0) .getNodeValue());
                            }
                        }
                        out.println(s);
                    }
                }
                else {
                    System.out.println("File Not Found");
                }

            }
            catch (Exception e) {
                System.out.println(e);
            }

        }

    }
    out.close();
    System.out.println(str);


}catch(FileUploadException ex) {
    log("Error encountered while parsing the request",ex);
} catch(Exception ex) {
    log("Error encountered while uploading file",ex);
}

Javascript 部分:

function postData() {
    $.post("/com/FileUploadServlet", { "file": "/com/FileUploadServlet" }, function(data) {
        alert(data); 
    });
}

$(document).ready(function() {
    postData();
});

alert(data); 打印 "Using Commons File Upload" 但在 servlet 中 out.println(s); 并没有在警报中提供我的数据,而是显示为空白。

【问题讨论】:

  • 调试代码。 servlet 中的哪些代码被执行,哪些不被执行?症状表明 s 根本没有填充。

标签: java javascript html servlets jquery


【解决方案1】:

您声明您正在向浏览器发送一个逗号分隔的字符串,并且您希望在 Javascript/JQuery 中用逗号分隔它。这是对您问题的合理总结吗?我发现它很难阅读,但我认为这就是你要问的,所以这就是我要回答的。 :)

Javascript 有一个.split() 方法,您可以在任何字符串变量上使用它。

因此,当您在 Javascript 代码中收到字符串时,您可以简单地执行以下操作:

var splitstring = inputstring.split(',');

希望对您有所帮助。 (虽然我确实觉得这个问题比我的解释更多)

【讨论】:

  • 感谢您的信息。抱歉这么大的问题,简而言之,我想知道,在我的代码中,我将如何在提交上传文件的同一 HTML 页面中接收逗号分隔的字符串。
  • 我设法解决了这个问题,不是通过发送数组而是通过,分隔符分隔的文本字符串。如果 some1 想看看,这里是链接。 elmicoxcodes.blogspot.com/2007/03/…
【解决方案2】:

例如,您可以将 java 中的数组转换为 JSON 字符串,然后在 javascript 端从中创建一个对象,如下所示:

var myObject = eval('(' + myJSONtext + ')');

【讨论】:

  • 您好,感谢您的回复。我使用了 JSON,但现在从 DefaultHandler 内部如何传递 JSON 对象? JSONObject obj=new JSONObject(); obj.put("host",summ[0]); obj.put("name",summ[1]);
  • 你能告诉我一个例子来帮助我从 DefaultHandler 块内部传递这个 JSON 对象并在 jquery 中使用它吗?
  • 嘿,我编辑了我的代码。现在传递数据似乎要容易得多,因为它是唯一的字符串数组,所以我可以用一些分隔符传递。我想知道如何从我的 servlet 接收字符串到我上传文件的同一 html 页面,以显示字符串(servlet 返回的字符串)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-14
  • 1970-01-01
  • 2014-05-16
  • 1970-01-01
  • 1970-01-01
  • 2014-04-21
相关资源
最近更新 更多