【问题标题】:How to send unicode characters to servlet by ajax??如何通过ajax将unicode字符发送到servlet?
【发布时间】:2014-02-25 10:44:40
【问题描述】:

我正在开发一个登录页面,该页面具有 enctype multipart/formdata 的形式,其中包含用户输入任何语言数据的输入字段。我正在使用 ajax (FormData) 将数据发送到服务器,在服务器上我无法正确获取数据,因为我无法转换为 unicode。我已将页面编码设置为 utf-8。我猜标题有问题。 请有人帮帮我。

这是我的代码:

客户:

                    var formdata=new FormData();
                    formdata.append("servname",servname);
                    formdata.append("disptype1",disptype1);
                    formdata.append("text",text);
                    formdata.append("back",back);
                    formdata.append("servtype",servtype);
                    formdata.append("caption",caption);
                    formdata.append("selsubservices",selsubservices);
                    formdata.append("action","addinfo");
                    formdata.append("iconfile",iconfile);
                    $.ajax({
                        type: "POST",
                        url: 'settingServlet',
                        data: formdata,
                        //dataType: 'json',
                        //contentType: "multipart/form-data",
                        //processData: false,
                        contentType:false,
                        processData:false,
                        success: function (response) {     
                            processAddResponse(response);
                        },
                        error: function (error) {
                            alert("Error occured at" +error);
                        }
                    });

服务器:

boolean isMultipart = ServletFileUpload.isMultipartContent(request);
            if (isMultipart)
              {
                DiskFileItemFactory factory = new DiskFileItemFactory();
                ServletFileUpload uploads = new ServletFileUpload(factory);
                List<FileItem> formItems = uploads.parseRequest(request);
                if (formItems != null && formItems.size() > 0)
                  {
                    for (FileItem item : formItems)
                      {
                        if (item.isFormField())
                          {
                            //upload formdata except files
                            String fieldname = item.getFieldName();

                            if (fieldname.equals("roomname"))
                          {
                           name = item.getString();//data corrupts here.
                           name = new String(roomname.getBytes("iso-8859-1"),"UTF-8");
                           name = convert(roomname);
                           name = JUtility.toHTML(roomname);
                          }
                       }
                   }

【问题讨论】:

    标签: java jquery ajax forms multipartform-data


    【解决方案1】:

    确保在 ajax 选项中设置 contentType 元素,如下所述:

    https://api.jquery.com/jQuery.ajax/

    我认为你现在没有正确使用它(不确定contentType:false,实际上是做什么的)

    【讨论】:

    • 我不得不设置 ContentType:false 因为我无法正确处理多部分数据。
    猜你喜欢
    • 2013-02-09
    • 2019-05-02
    • 1970-01-01
    • 2020-08-05
    • 2012-07-02
    • 2021-05-03
    • 2014-09-15
    • 2019-10-25
    相关资源
    最近更新 更多