写这篇文章的初衷是因为这个错,导致我找了一堆东西,还不如直接在这里一次性说一下,应该差不多仅适用于类似错误
在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对应的方法了。