关于使用ajax传值,后台操作成功,但始终不进入success

写这篇文章的初衷是因为这个错,导致我找了一堆东西,还不如直接在这里一次性说一下,应该差不多仅适用于类似错误

在csdn找到了很多自己无法解决的错误,希望有相同错误的人也能够解决自己的问题

(#^.^#)

html代码:

<body>
    <div class="div1">
        <form>
            监测区域:<select name="district_id">
                <c:forEach items="${districtList}" var="district">
                    <option value="${district.id}">${district.name}</option>
                </c:forEach>
            </select><br/>
            监测日期:<input type="text" name="monitor_time"><br/>
            PM10值:<input type="text" name="pm10"><br/>
            PM2.5值:<input type="text" name="pm2_5"><br/>
            监测站:<input type="text" name="monitoring_station"><br/>
            <input type="submit" value="保存">
            <input type="reset" value="重置">
            <input type="button" value="返回">
        </form>
    </div>
  
</body>

js代码:

注意我的dataType 是text 类型

  <script type="text/javascript" src="/js/jquery-1.8.3.min.js"></script>
    <script type="text/javascript">
        $(function () {
            $("form").submit(function () {
                $.ajax({
                    type:"GET",
                    data:$(this).serialize(),
                    url:"/save",
                    dataType:"text",
                    success:function(ss){
                        alert(ss);
                        if (ss=="true"){
                            alert("新增成功!");
                            window.location.href = "/airqualitylist";
                        }else{
                            alert("新增失败!");
                        }
                    },
                    error:function(ss){
                        alert("有错误!"+ss);
                    }
                });
            });
        });
    </script>

在这里补充一下:(是我在找错时,突然发现的)

通过dataType选项还可以指定其他不同数据处理方式。除了单纯的XML,还可以指定 html、json、jsonp、script或者text。

其中,text和xml类型返回的数据不会经过处理。数据仅仅简单的将XMLHttpRequest的responseText或responseHTML属性传递给success回调函数,

'''注意''',我们必须确保网页服务器报告的MIME类型与我们选择的dataType所匹配。比如说,XML的话,服务器端就必须声明 text/xml 或者 application/xml 来获得一致的结果。

如果指定为html类型,任何内嵌的JavaScript都会在HTML作为一个字符串返回之前执行。类似的,指定script类型的话,也会先执行服务器端生成JavaScript,然后再把脚本作为一个文本数据返回。

如果指定为json类型,则会把获取到的数据作为一个JavaScript对象来解析,并且把构建好的对象作为结果返回。为了实现这个目的,他首先尝试使用JSON.parse()。如果浏览器不支持,则使用一个函数来构建。JSON数据是一种能很方便通过JavaScript解析的结构化数据。如果获取的数据文件存放在远程服务器上(域名不同,也就是跨域获取数据),则需要使用jsonp类型。使用这种类型的话,会创建一个查询字符串参数 callback=? ,这个参数会加在请求的URL后面。服务器端应当在JSON数据前加上回调函数名,以便完成一个有效的JSONP请求。如果要指定回调函数的参数名来取代默认的callback,可以通过设置$.ajax()的jsonp参数。
--------------------- 
作者:享受编程_ 
来源:CSDN 
原文:https://blog.csdn.net/u013476542/article/details/61414401 
版权声明:本文为博主原创文章,转载请附上博文链接!

 

下面附上controller代码:

 //保存新增信息
    @RequestMapping(value = "save")
    @ResponseBody
    public String save(HttpServletRequest request, Airquality airquality, HttpServletResponse response) {
        response.setContentType("text/plain");//我在这里设置了内容类型
        logger.debug("==============>进入save方法!");
        logger.debug("monitoring_station=============>"+request.getParameter("monitoring_station"));
        airquality.setLast_modify_time(new Date());
        HashMap<String,String> indMap = new HashMap<String,String>();
        int index = airqualityService.add(airquality);
        logger.debug("index==============>"+index);
        String indexs ="";
        if (index==1){
            indexs= "true";
//            indMap.put("rss","true");
        }else {
            indexs= "false";
//            indMap.put("rss","false");
        }
//        return JSONArray.toJSONString(indMap);
        return indexs;
    }

当初我以为是在前端代码form表单中加入属性

enctype="text/plain"

然它的作用:enctype 属性规定在发送到服务器之前应该如何对表单数据进行编码。

原谅我一小白学的不够扎实 (#^.^#)

仔细想想,后台是响应,从后台代码传值过去,那就应该从后台代码响应入手

如果你的错误与我不同,也可以考虑一下这种情况:

后台返回的json数据是一个纯String类型的对象时,前端dataType属性设置为json后,会认为这个由String对象转换的json数据格式不是标准的json格式,所以就去执行error对应的方法了。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值