我在mysql数据库中有一个userdetails表,我已经使用jquery在onsubmit中插入了记录。(user_id,name,age,phone,email,text) 现在可以在html页面中使用jquery在列表中查看相同的记录,当我点击user_id(" 1"我作为href制作)时,所以当我点击1时,详细信息1包含将在我的user_details.html页面中查看,如
http://localhost:8082/JqueryForm/html/user_details.html?user_id=1
姓名:abc ---------->我的html页面中的textarea
电话:1000000
电子邮件:abc@gmail.com
年龄:20
text:abcdefghij
现在当我的user_details.html打开时只显示特定用户的详细信息时,我可以编辑值,因为它是textarea,并在更新按钮的帮助下更新数据库中相同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;
});
});
答案 0 :(得分:2)
我注意到在你的jquery中,在你的ajax调用中,var dataString不包含你需要执行更新的user_id。同样在您的prepareStatement中,您的vars的顺序不受尊重。
.prepareStatement(&#34; update user_details set user_name =?,user_age =?,mobile_no =?,email_id =?,ck_text =?where USER_ID =&#34;?);
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();
答案 1 :(得分:0)
您的问题可能与值的顺序有关,您将名称设置为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);
答案 2 :(得分:0)
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);
答案 3 :(得分:0)
@DDA描述了正确的答案。只是补充。
从网址http://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();
}
}