AJAX、获取节点 、[object HTMLInputElement]

版权声明:转载请注明出处。 https://blog.csdn.net/bagpiping/article/details/84190200

问题描述:

1、我想把一个JSP页面的表单里的数据,用AJAX异步提交给数据库。结果数据库不改变。

2、第二个问题,我举个例子在js中的代码:

<input type="sumbit" name="" id="china">

<script>
	var div = document.getElementById("china");
    alert(div);
</script>

但是在浏览器中弹出: [object HTMLInputElement]

3、看下面的JSP。我从数据库提取了movie这个JavaBean,作为list传过来。通过 jstl 标签遍历放到一个表格的 td 中。把某两个值用EL表达式的形式传给了JS函数。

<table id="table" style="margin-top:150px;margin-left:300px;">
		<tr>
			<td>ID</td>
			<td>名字</td>
			<td>租金</td>
			<td>修改价格</td>
			<td>提交</td>
		</tr>
		<c:forEach items="${requestScope.list }" var="movie"> 
			<tr>
				<td>${movie.id }</td>
				<td id="platname">${movie.name }</td>
				<td id="rent">${movie.rent }</td>
				<td><input type="text" id="txtInput" value=""/></td>
				<td><a href="javaScript:change('${movie.id }','${movie.name }')">确认修改</a></td>
			</tr>
		</c:forEach>
	</table>

如果我在 js 中这么写:

var m = document.getElementById( "txtInput" );
alert(m);
alert(m.value);
alert(m.innerHTML);

结果是弹出框会浇灭你的心火。弹出框可能是白的,可能是弹出问题 2 ,也可能弹出框根本不吊你。。。
这个就是我的问题,前端 js 忘了。。。解决过程 3 。

解决过程:

1、先查看事务管理,我用的JDK8,框架是SpringBoot和Mybatis,数据库是MySQL,只要在service层的update、insert、delete等方法上加上注解 @Transactional 即可。因为springboot默认是在程序入口开启事务管理。
2、我给mybatis写了映射文件,要排除这里的错误,SQL语句语法等等。
3、我的问题就是 在 js函数没有获取到 表单中的数据。

  • 首先是我用 foreach 把表格往下拉了一堆,然后每一行的表单id都一样,所以会出问题,我把原先的id和每行的特定“属性”拼接后解决了这个小问题,id="txtInput_${movie.id }"
  • 然后是在JS函数中成功获取某个HTML中节点的值,这个可能就是我的问题,说可能是因为我的小问题多!
  • 获取节点试了很多方法,最后下面那张图片的“答主”给了我灵感(痛哭流涕),见解决问题5

4、AJAX用对,我采用了“古老的方法”:

  • 创建XMLHTTPRequest
  • 初始化
  • 回调过程
  • open
  • send

5、获取HTML中某个节点

  • 获取节点的属性
  • 获取节点的值
    • var m = document.getElementById("***").id;
    • var value = document.getElementById(m).value;

我是看这位老兄的:加个id

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/bagpiping/article/details/84190200