AJAX、獲取節點 、[object HTMLInputElement]
阿新 • • 發佈:2018-11-20
問題描述:
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