ajax传递参数

这两天在做一个短信发送平台,在做的过程中又遇到了一些问题。以前公司的项目是基于springmvc框架搭建的,有很多东西都是框架内已经考虑好的,开发者只需要简单地按照步骤来实现即可。
现在在新公司里,项目完全是基于servlet+jsp搭建的内部框架使用的,所以为了熟悉使用原生的servlet和jsp,自己做的短信发送平台也都基于servlet和jsp。

在使用ajax请求后台servlet的内容时,出现了servlet获取不到数据。代码如下:

$.ajax({
          url:path+"/pages/sendsms.action",
          type:"POST",
          dataType:"json",
          processData:false,
          async: false,
          cache: false,
          data:{phone : $.trim($("#phone").val()),content:$.trim($("#content").val())},
          contentType: "application/x-www-form-urlencoded; charset=utf-8",
          success: function(){
              alert("发送成功");
          },
          error: function () {  
              alert("error");
          }
    });

在后台通过request.getParameter()来获取数据,但是打印出来的内容为null。
一开始以为是原生的servlet无法接受来自ajax的内容,然后将上传的值改为json格式,但是还是无法获取到正常的值。
然后将注意力集中在ajax的参数之中,认为contentType存在着错误。将contentType改为“json”,在火狐浏览器中看到的请求参数为正确的json格式,但是在servlet中还是无法获取到正常的值。
最后才发现问题的关键在processData:false当中,这个参数默认值为true,用于将参数对象序列化。

同时还有一个问题:

在ajax提交完成之后,回调总是error,就算已经请求成功还是一样的问题,最后将问题锁定在servlet中并没有返回json格式的响应内容。

你可能感兴趣的:(Java)