【问题标题】:how to update records into mysql database using jquery?如何使用 jquery 将记录更新到 mysql 数据库中?
【发布时间】:2015-06-04 17:30:56
【问题描述】:

我在 mysql 数据库中有一个 userdetails 表,我使用 jquery 在提交时插入了记录。(user_id、姓名、年龄、电话、电子邮件、文本) 现在可以在 html 页面中使用 jquery 在列表中查看相同的记录,当我单击 user_id(我已作为 href 制作的“1”)时,因此当我单击 1 时,1 包含的详细信息将是在我的 user_details.html 页面中查看,如

http://localhost:8082/JqueryForm/html/user_details.html?user_id=1

名称:abc ---------->我的html页面中的textarea

电话:1000000

电子邮件:abc@gmail.com

年龄:20

文本:abcdefghij

现在,当我的 user_details.html 仅以特定用户的详细信息打开时,我可以编辑值,因为它是一个文本区域,并在更新按钮的帮助下更新数据库中相同 user_id 的值

我写了一个更新查询

public void update_UserDetails(int user_id ,String user_name, String age, 
        String mobile_no, String email_id,
        String ck_text) {
    try {
        prep = (PreparedStatement) connection
                .prepareStatement("update user_details set 
        user_name=?,user_age=?,mobile_no=?,email_id=?,ck_text=? where 
        user_id=?");
        prep.setInt(1, user_id);
        prep.setString(2, user_name);
        prep.setString(3, age);
        prep.setString(4, mobile_no);
        prep.setString(5, email_id);
        prep.setString(6, ck_text);
        prep.executeUpdate();
    } catch (SQLException e) {
        e.printStackTrace();
    }
}

并在我的 user_details.jsp 页面中调用了该方法

<%
    Sql_Server server = new Sql_Server();
    String name = request.getParameter("name");
    String age = request.getParameter("age");
    String email = request.getParameter("email");
    String phone = request.getParameter("phone");
    String ck_text = request.getParameter("ck_text");
    String user_id = request.getParameter("user_id");
    int userid = Integer.parseInt(user_id);
    server.update_UserDetails(userid,name, age, phone, email,ck_text);
%>

现在当我在 jquery 中调用 jsp 页面时,值没有得到更新,谁能帮我理解为什么值没有得到更新?

$(document).ready(function(){
    $("#update").click(function(e) {
        var name = $("#nametext").val();
        var age = $("#agetext").val();
        var email = $("#emailtext").val();
        var phone = $("#phonetext").val();
        var ck_text = $("#textarea").val();
        var dataString = '&name=' + name + '&age=' + age + '&email=' + email + '&phone=' + phone + '&ck_text=' + ck_text;

            $.ajax({
                type : "POST",
                url : 
             "http://localhost:8082/JqueryForm/html/jsp/update_userdetails.jsp",
                data : dataString,
                cache : false,
                success : function(result) {
                         alert("Records Updated Successfully");
                         }
            });
        return false;
    });
});

【问题讨论】:

  • 控制台说什么?有什么错误吗?页面找到了吗?如果是,它返回什么?
  • 你错过了吗.. prep.setString(6, user_id); ..?
  • 我使用了 prep.setInt(1,user_id)

标签: java jquery html mysql jsp


【解决方案1】:

我注意到在您的 jquery 中,在您的 ajax 调用中,var dataString 不包含执行更新所需的 user_id。同样在您的 prepareStatement 中,您的变量的顺序也没有得到尊重。

.prepareStatement("update user_details set user_name=?,user_age=?,mobile_no=?,email_id=?,ck_text=? where user_id=?");

prep.setInt(1, user_id); // 应该在最后一个位置

prep.setString(2, user_name);

prep.setString(3, age);

prep.setString(4, mobile_no);

prep.setString(5, email_id);

prep.setString(6, ck_text);

prep.executeUpdate();

【讨论】:

【解决方案2】:

您的问题可能与值的顺序有关,您将 name 设置为 user_id 并将 id 设置为 ck_text:

prep = (PreparedStatement) connection
        .prepareStatement("update user_details set 
user_name=?,user_age=?,mobile_no=?,email_id=?,ck_text=? where 
user_id=?");
prep.setInt(1, user_id);
prep.setString(2, user_name);
prep.setString(3, age);
prep.setString(4, mobile_no);
prep.setString(5, email_id);
prep.setString(6, ck_text);

【讨论】:

    【解决方案3】:

    您分配了错误的值 如下操作

        prep.setString(1, user_name);
        prep.setString(2, age);
        prep.setString(3, mobile_no);
        prep.setString(4, email_id);
        prep.setString(5, ck_text);
        prep.setInt(6, user_id);
    

    【讨论】:

      【解决方案4】:

      @DDA 描述了正确的答案。只是补充。

      从urlhttp://localhost:8082/JqueryForm/html/user_details.html?user_id=1获取查询字符串 您可以使用以下代码(有关更详细的讨论,请参阅this post):

      $(document).ready(function(){
      
          function getParameterByName(name) {
              name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]");
              var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"),
                  results = regex.exec(location.search);
              return results === null ? "" : decodeURIComponent(results[1].replace(/\+/g, " "));
          }
      
          $("#update").click(function(e) {
              var name = $("#nametext").val();
              var age = $("#agetext").val();
              var email = $("#emailtext").val();
              var phone = $("#phonetext").val();
              var ck_text = $("#textarea").val();
      
              var user_id = getParameterByName('user_id');
      
              var dataString = 'user_id=' + user_id + '&name=' + name + '&age=' + age + '&email=' + email + '&phone=' + phone + '&ck_text=' + ck_text;
      
              $.ajax({
                  type : "POST",
                  url : 
               "http://localhost:8082/JqueryForm/html/jsp/update_userdetails.jsp",
                  data : dataString,
                  cache : false,
                  success : function(result) {
                           alert("Records Updated Successfully");
                           }
              });
              return false;
          });
      });
      

      而且更新语句要改成:

      public void update_UserDetails(int user_id ,String user_name, String age, 
                                     String mobile_no, String email_id,
                                     String ck_text) {
          try {
              prep = (PreparedStatement) connection
                            .prepareStatement("update user_details set user_name=?,user_age=?,mobile_no=?,email_id=?,ck_text=? where user_id=?");
      
              prep.setString(1, user_name);
              prep.setString(2, age);
              prep.setString(3, mobile_no);
              prep.setString(4, email_id);
              prep.setString(5, ck_text);
              prep.setInt(6, user_id);
      
              prep.executeUpdate();
          } catch (SQLException e) {
              e.printStackTrace();
          }
      }
      

      【讨论】:

        猜你喜欢
        • 2017-08-01
        • 2020-10-25
        • 2018-11-21
        • 2016-03-07
        • 1970-01-01
        • 1970-01-01
        • 2019-03-12
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多