【发布时间】:2017-09-26 14:12:17
【问题描述】:
我正在尝试单击“更改”按钮并将表单数据发送到另一个 JSP 页面,以便在数据库中执行 UPDATE 语句。由于某种原因,我无法获得“更新”id 按钮来执行带有 AJAX 调用的 click() 函数,因为没有弹出“火腿”警报。抱歉,由于我尝试了多种方法,因此我在脚本标签中有多种注释掉的方法。有人能帮我解决这个问题吗?当前的jsp页面如下:
<!DOCTYPE html>
<head>
<script src="/.jquery-1.9.1.js" type="text/javascript" charset="utf-8"></script>
<script src="http://code.jquery.com/jquery=latest.min.js" type="text/javascript">
var getUrlParameter = function getUrlParameter(sParam) {
var sPageURL = decodeURIComponent(window.location.search.substring(1)),
sURLVariables = sPageURL.split('&'),
sParameterName,
i;
for (i = 0; i < sURLVariables.length; i++) {
sParameterName = sURLVariables[i].split('=');
if (sParameterName[0] == sParam) {
return sParameterName[1] == undefined ? true : sParameterName[1];
}
}
};
$(document).ready(function() {
var key = getUrlParameter("key");
});
$(form).submit(function() {
if (-1 == this.action.indexOf('register')) {
var jForm = $(this);
$.post(this.action, $(this).serialize(), function(data) {
if (data.status == 'SUCCESS') {
jForm[0].action = data.redirectUrl;
jForm.submit();
}
return false;
}
}
});
window.onload = function() {
document.getElementById("submit").onclick = function() {
location.href = "/View.jsp";
}
}
window.onload = function() {
document.getElementById("update").onclick = function() {
location.href = "/View.jsp";
}
}
$(document).ready(function() {
$('#update').on('click', function(e) {
alert('ham');
$.ajax({
type: "post",
url: "change.jsp",
data: $("#form").serialize(),
success: function(msg) {
alert(msg.data);
},
error: function(xhr, ajaxOptions, thrownError) {
alert(xhr.status);
alert(thrownError);
}
});
$(document).ready(function() {
function click() {
alert('ham');
$.ajax({
type: "post",
url: "change.jsp",
data: $("#form").serialize(),
success: function(msg) {
alert(msg.data);
},
error: function(xhr, ajaxOptions, thrownError) {
alert(xhr.status);
alert(thrownError);
}
});
window.location.href = "change.jsp";
return false;
}
});
/*function validateForm(){
var x=document.forms["insert"]["ID"].value;
alert(x.len());
if(x==null||x==""){
alert("ID must be filled out");
return false;
}
}*/
</script>
</head>
<body>
...
<form id="myForm" action="register" method="post" name="insert">
ID:
<input type="text" name="ID" required value="<%=id%>" />
<br/> RHINO:
<input type="text" name="rhino" required value="<%=rhino%>" />
<br/> OX:
<input type="text" name="ox" required value="<%=ox%>" />
<br/> HORSE:
<input type="text" name="horse" required value="<%=horse%>" />
<br/>
<input type="submit" value="Submit" id="submit" />
<!--<input type="submit" value="Update" id="change"/>-->
<button id="update" onclick="return click()">Change</button>
</form>
...
</body>
</html>
【问题讨论】:
-
这有点乱。多个 docment.ready 和 window onload 函数,有时从外观上看是相互嵌套的。而一些应该在 document.ready 中的东西不是(例如提交处理程序)。还有一些代码似乎几乎与其他位重复。正如下面的答案所示,几乎可以肯定会给您范围界定问题。您可以将所有内容合并到一个文档中。准备好,首先删除重复项,然后重试。似乎您只是在喜欢时添加 document.ready 等,而没有真正了解自己在做什么?
-
@sundance91:请不要破坏问题并使现有回复无效。如果您有新问题,请将其作为新问题发布。另请注意,您将其更改为的问题在 Stack Overflow 的格式中基本上是无法回答的。它太宽泛了,互联网上无数可用的教程都可以回答。
标签: javascript java jquery ajax