未捕获的类型错误:非法调用

Uncaught TypeError: Illegal invocation

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

我正试图使用Ajax、Servlet和HTML从数据库中删除用户。当我提交数据时,会发生非法调用。我认为连接或SQL语句不会有任何问题

删除.html

<input type="text" id="delete">
<input type="submit" onclick="deleteUSer()" value="Delete">

删除.js

function deleteUSer(){
        var username = document.getElementById("delete");
        var params = {
            username: username
        }
    $.post("Delete", params, function(data){}
            )
}

Delete.java servlet

protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        PrintWriter out = null;
        DBUtils dbutils = null;
        Connection conn = null;
        try{
            String username = request.getParameter("username");
            dbutils = new DerbyUtils();
            conn = dbutils.getConnection();
            DeleteDAO dao = new DeleteDAO(conn);
            dao.deleteUser(username);

            RequestDispatcher dispatcher =
            getServletContext().getRequestDispatcher("/index.html");
            dispatcher.forward(request, response);

        }

删除DAO.java

public void deleteUser(String username) throws SQLException{
      try{

          String sql = "delete from users where username='"+username+"'";
          PreparedStatement ps = this.conn.prepareStatement(sql);
          ps.executeQuery();

您发送的是html文档elemec而不是用户名。。。

试试这个——

<input type="text" id="delete" value="vivek">
<input type="submit" onclick="deleteUSer()" value="Delete">

    function deleteUSer(){
            var username = document.getElementById("delete");
            var params = {
                username: username.value
            }
        $.post("Delete", params, function(data){}
                )
    } 

如果您试图制定可用于HTTP请求的"delete"命令,您将希望使用$.ajax,而不是$.post

引用文档(https://api.jquery.com/jQuery.post/):

这是一个简写的Ajax函数,相当于:

$.ajax({
  type: "POST",
  url: url,
  data: data,
  success: success,
  dataType: dataType
});

如果你想实施"删除",你会想做一些类似的事情:

var dataObj = {
        'username': document.getElementById("delete").value;
    }
$.ajax({
    type:"DELETE",
    data: dataObj,
    url: 'url/to/your/servlet'
});

您可能还想在其中包含一个数据类型,但对于本例,jquery可以找到它。