ajax为什么当把type改成“post”后,后台收到的参数就都是null啦?

用get就能收到所有参数,改成post后,后台收到的就都是null啦?

           function save(NOTICEID,REPLYCONTEXT){
               $.ajax({
                   contentType:"text/html;charset =utf-8",
                   type : "get",
                   url : "../RhNoticeAction.do",
                   dataType : "json",
                   timeout:60000,
                   async : false,
                   data : {
                       type:"save",
                       NOTICEID:NOTICEID,
                       REPLYCONTEXT:REPLYCONTEXT
                   },
                   success : function(resp) {
                       consol.log(resp)
                       if(resp.data=="ok"){
                           alert("保存成功!")
                       }else{
                           alert("保存失败!")
                       }
                   }
               });
           }
阅读 2.4k
3 个回答

你的dataType设置成了json,这样的话会把header中的ContentType设置为"text/json"
然后你又单独设置了ContentType:"text/html"。我理解这两个会产生冲突,如果是json格式的话,你可以单独使用dataType:"json"来控制,而不同时配置ContentType:"text/html"

为什么之前get能用,我理解是因为:

  1. get时是把参数拼接在url里传递过去了,类似&type=save&....的形式,而没有进行json 的传递;
  2. 后台接收使用的并不是json的接收,而是form-data形式的

所以导致了改成POST传递之后,接收到的参数为空。

楼上说的有道理 改成 'application/json;charset=utf-8' 试试

ContentType 设置错误。

contentType:"text/html;charset =utf-8",

去掉,或修改为正确的 ContentType

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题