欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Servlet 与 Ajax 交互一直报status=parsererror的解决办法

程序员文章站 2022-03-14 10:50:47
原因:servlet 返回的数据不是 json 格式 1、js代码为: var jsonstr = {'clusternum':2,'iterationnum'...

原因:servlet 返回的数据不是 json 格式

1、js代码为:

var jsonstr = {'clusternum':2,'iterationnum':3,'runtimes':4};
    $.ajax({
      type: "post",
      //http://172.22.12.135:9000/json.json
      url: "/lshome/lshome",
      datatype : 'json',
      data : jsonstr,
      success: function(data,textstatus){
        if(textstatus=="success"){ 
          alert("创建任务操作成功"+data);      
        }        
      },
      error: function(xhr,status,errmsg){
        alert("创建任务操作失败!");
      }
    });

2、注意上面的 url 为 /lshome/lshome,(项目名称为lshome)所以在 web.xml 文件中,配置 servlet 如下:

<servlet>
   <servlet-name>lshomeservlet</servlet-name>
   <servlet-class>com.ys.servlet.lshomeservlet</servlet-class>
 </servlet>
 <servlet-mapping>
   <servlet-name>lshomeservlet</servlet-name>
 <url-pattern>/lshome</url-pattern>

  3、servlet 中代码为:

protected void dopost(httpservletrequest request, httpservletresponse response) throws servletexception, ioexception {
    //聚类数量
    string clusternum = request.getparameter("clusternum");
    //迭代次数
    string iterationnum = request.getparameter("iterationnum");
    //运行次数
    string runtimes = request.getparameter("runtimes");
    system.out.println("聚类数量为:"+clusternum+"---迭代次数:"+iterationnum+"---运行次数:"+runtimes);
    printwriter out = response.getwriter();      
    out.write("success");
    out.close();  
  }

4、结果是一直都是进入到 ajax 方法里面的 error,而且status=parsererror

xhr = object {readystate: 4, responsetext: "success", status: 200, statustext: "ok"}

5、解决办法:

原因是通过 response 对象返回的数据格式不正确,正确方法

 printwriter out = response.getwriter();
string jsonstr = "{\"success\":\"ok\"}";
 out.write(jsonstr);

可以将返回值拼凑成 json 数据格式,然后会不会报status=parsererror

以上所述是小编给大家介绍的servlet 与 ajax 交互一直报status=parsererror的解决办法,希望对大家有所帮助