如何在ajax中获得超过1个响应

时间:2014-10-15 07:17:11

标签: java jquery ajax jsp servlets

我从JSP上传文件并在servlet中处理它并将数据返回给JSP。

上传文件的JSP文件:

$(document).ready(function() {
    $(':file').change(function(){
        var fileObj = this.files[0];
        var form = $('#upload');
        var fd = new FormData();    

        fd.append( 'file', fileObj);
        $.ajax({
            url: form.attr('action'),
            type: form.attr('method'),
            data: fd,
            processData: false,
                contentType: false,
            async: false,
        }).done(function(data){
            alert('ajax complete');
                $('#previewForm').append("<div>" + data + "</div>");
            $('#ldiv').hide();
        }).fail(function() {
            alert("error");
            $('#ldiv').hide();
        });
    }

Servlet文件。

由jsp上传的读取文件 假设上传Excel文件。 读取该文件数据并将该数据转换为jsonString。 现在我想发送该字符串作为ajax调用的响应

我需要返回超过1的值

System.out.print("test.xlsx");  //File name 
System.out.print(jsonSting); // jsonSting is variable that is data of excel file which convert in json
System.out.print("chintan");  //other parameter.

那么,当ajax调用时,我怎么能在JSP中响应Handel 3??

3 个答案:

答案 0 :(得分:1)

参考链接here 在你的jsp页面

import org.json.simple.JSONObject;


      JSONObject obj = new JSONObject();

      obj.put("fileName", "test.xlsx");
      obj.put("jsonSting", jsonSting);
      obj.put("name", "chintan");

在你的ajax回复中

var json = $.parseJSON(data);

 $('#results').html('Filename name: ' + json.fileName + '<br />jsonSting: ' + json.jsonSting);

答案 1 :(得分:0)

为什么不将响应包装到json样式字符串,因此您可以在json对象中处理ajax调用结果。 在你的情况下,你的jsp可以像这样响应结果 &#34; {&#39;文件名&#39;:&#39; test.xlsx&#39;&#39; jsonString&#39;:&#39; ****&#39;&#39 ; chintan&#39;:&#39; ***&#39;}&#34;

如果你有多个,你也可以在其中的json对象中标记为数组

答案 2 :(得分:0)

ajax中的单个请求只会获得一个响应。您可以创建更多请求,与此相关的优秀解决方案here

OR

更好的方法是将额外的参数附加到json字符串本身并更改JS中的逻辑,以便在解析json字符串时从excel数据中分别提取这两个值。