这是我在stackoverflow中的第一个问题,在我的html页面中我有一个表,我想使用模态表单将数据发送到servlet。但是,我有这个错误:未捕获TypeError:非法调用。
table.html
<body>
<table border="1">
<tr>
<th>ID</th>
<th>NAME</th>
<th>ACTION</th>
</tr>
<tr>
<td>1</td>
<td>JHON</td>
<td><input type="button" value="display" class="d"></td>
</tr>
<tr>
<td>2</td>
<td>Max</td>
<td><input type="button" value="display" class="d"></td>
</tr>
</table>
<div id="dialog-form">
<input type="text" value="" id="id">
<input type="text" value="" id="name">
</div>
<div id="res"></div>
</body>
test.js
$(".d").click(function(){
var id =$("#id").attr("value",$(this).parent().prev().prev().text());
var name =$("#name").attr("value",$(this).parent().prev().text());
$("#dialog-form").dialog({
modal: true,
buttons: {
"Send":function () {
$.post("Controller",{id:id,name:name},function(data){
$("#res").html(data);
}) ;
}
Servlet.java
String name=request.getParameter("name");
String id=request.getParameter("id");
out.println(id +" "+ name);
答案 0 :(得分:0)
我想您正在尝试修改该值并在后端更新它。
var id =$("#id").attr("value",$(this).parent().prev().prev().text());
var name =$("#name").attr("value",$(this).parent().prev().text());
这会将对象分配给变量id和name。你不能用ajax发送它们而你不需要。因此错误。
在您的情况下,您需要使用id和name值更新模式文本框并将它们发送到服务器。另请注意,由于它是一个文本框,您需要发送用户可能已更改的更新值。
因此我们做了以下更改。
首先,我们只需在模态
中的文本框中设置id和name值$("#id").attr("value", $(this).parent().prev().prev().text());
$("#name").attr("value", $(this).parent().prev().text());
然后在ajax帖子中,我们发送从文本框中获取的更新值
$.post("Controller", {
id: $("#id").val(),
name: $("#name").val()
}, function (data) {
$("#res").html(data);
});