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

Uncaught TypeError: Illegal invocation:error with modal form

本文关键字:错误 模态 调用 非法 类型      更新时间:2023-09-26

这是我在stackoverflow中的第一个问题,在我的HTML页面中,我有一个表,我想使用模态形式将数据发送到servlet。但是,我有这个错误:未捕获的类型错误:非法调用。

表.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>

测试.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);  

我猜您正在尝试修改值并在后端更新它。

var id =$("#id").attr("value",$(this).parent().prev().prev().text());
var name =$("#name").attr("value",$(this).parent().prev().text()); 

这会将对象分配给变量 id 和名称。你不能在 ajax 中发送它们,也不需要。因此错误。

在您的情况下,您需要使用 id 和名称值更新模式文本框,并将它们发送到服务器。另请注意,由于它是一个文本框,因此您需要发送用户可能已更改的更新值。

因此,我们进行以下更改。

首先,我们只需在模态中的文本框中设置 id 和名称值

$("#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/