1. 程式人生 > >AJAX、獲取節點 、[object HTMLInputElement]

AJAX、獲取節點 、[object HTMLInputElement]

問題描述:

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

在這裡插入圖片描述