有没有办法检查是否使用if语句提交表单?
我正在尝试编写一个函数,无论用户做什么,信息总是被收到并显示给他们。但是,如果用户提交表单,它会将该数据发送到数据库并首先更新它。
我一直在努力寻找帮助我解决这个问题的事件或方法,但似乎找不到任何有用的东西。
function getData(){
if ( FORM SUBMITTED ) {
//POST and send
request.open("POST", url, true);
request.onreadystatechange = useResponse;
request.send(str);
}
//GET and display
request.open("GET", url, true);
request.onreadystatechange = useResponse;
request.send(null);
}
编辑:我没有刷新页面。我忘了提到我正在使用AJAX这样做。页面加载时,此函数最初运行(显示表单数据)。但我不希望表单发送任何数据,因为我只是加载页面而不是实际提交任何内容。加载页面后我点击提交,调用此函数。我需要的是AJAX通过POST发送表单数据,然后重新显示它(上面的脚本概述了该功能)。
提交表单时只调用函数:
action="javascript:getData()"
答案 0 :(得分:1)
我不太明白你在问什么,因为如果提交了一个表单,那么浏览器正在加载一个新的HTTP响应,该响应可能或可能不知道任何导致它生成的HTML表单。
<强> [编辑] 强>
看起来“getData”函数做了太多事情,我会创建单独的函数来处理“get”和“post”请求,例如:
<body>
<form name="form" action="#">...</form>
<script type="text/javascript">
var getData = function() {
// XHR GET data and update DOM...
};
getData();
var sendData = function() {
// XHR POST form encoded data from form input elements...
};
document.form.onsubmit = function() {
sendData();
getData();
return false; // Block the actual form submit event.
};
</script>
</body>
jQuery serialize() function演示了以编程方式对表单数据进行编码所需的内容。
答案 1 :(得分:0)
如果是这种情况,您的代码看起来就像......
var get = function(callback) {
var req = new XMLHttpRequest();
req.open = req.open('GET', url);
req.onreadystatechange = function() {
if (...) {
callback(req.responseText);
}
};
req.send();
};
var exec = function(callback) {
if (FORM_SUBMITTED) {
var req = new XMLHttpRequest();
req.open('POST', url);
req.onreadystatechange = function() {
if (...) {
get(callback);
}
};
req.send();
} else {
get(callback);
}
};
exec(function(data) {
console.log('request(s) complete, here's the response: '+data);
});
由于XHR只是非常值得 - 当异步使用时,你必须嵌套一些回调以确保所有内容都是串行发生的,否则,GET可能会在POST之前完成。