未捕获的TypeError:非法调用:模态形式的错误

时间:2015-03-15 12:25:43

标签: javascript html5 servlets

这是我在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);  

1 个答案:

答案 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);
});

以下是工作代码http://jsfiddle.net/xec61c0m/