如何使用jQuery设置计时器来发送HTML表单的HTTP发布数据
我有一个HTML表单,我需要使用HTTP POST和输入数据发布到服务器。
具体来说,我只需要发送表单中选中的所有复选框的参数值。
如果用户在10分钟内没有自己动手,我需要这样做。
我不确定实现这一目标的最佳方法,但是现在我正在尝试使用jQuery做到这一点,但遗憾的是我对JavaScipt或jQuery一无所知,所以我试图学习它但却未能实现这么简单的事情。
我需要在加载表单的页面10分钟后运行以下内容。
$("document").ready(function() { var checkedInputElements = $(":input[value=true]"); var paramNames = []; jQuery.each(checkedInputElements, function() { var paramName = $(this).attr("name"); paramNames.push(paramName); }); $("form").submit(function() { jQuery.post({ type: 'POST', url: "http://localhost:8080/wickedlynotsmart/auto-submit-form", data: paramNames }); return true; }); });
我不确定上面的代码是否正确。 我还在努力。 有人可以建议我一个指南,我可以用来编写一个计时器,以便这个代码在页面加载后10分钟结束后运行?
谢谢。
编辑 :
wikedlynotsmart.com <link rel="stylesheet" type="text/css" href="" /> <link rel="stylesheet" type="text/css" href="" /> <script type="text/javascript" src=""> <script type="text/javascript" src=""> SyntaxHighlighter.all() //auto-submit-form javascipt code <form id="form" action="" method="post"> - ${thing.something}
${matter.somematter}
这是我正在努力的页面,并试图让事情适合我。
这样做:
setInterval(submit_me, 600000); // (1000 * 60 * 10 = 600000) function submit_me() { $('#form').submit(); }
更短的版本:
setTimeout(function() { $('#form').submit(); }, 5000);
使用setTimeout(function, millisDelay)
$("document").ready(function() { setTimeout(function(){ var checkedInputElements = $(":input[value=true]"); var paramNames = []; jQuery.each(checkedInputElements, function() { var paramName = $(this).attr("name"); paramNames.push(paramName); }); $("form").submit(function() { jQuery.post({ type: 'POST', url: "http://localhost:8080/wickedlynotsmart/auto-submit-form", data: paramNames }); return true; }); }, 600000); });
NB。 setTimeout(function, millisDelay)
是一个内置的javascript函数 – 它不是jQuery或任何其他库的一部分
使用成功处理程序:
$("document").ready(function() { setTimeout(function(){ var checkedInputElements = $(":input[value=true]"); var paramNames = []; jQuery.each(checkedInputElements, function() { var paramName = $(this).attr("name"); paramNames.push(paramName); }); $("form").submit(function() { jQuery.post({ type: 'POST', url: "http://localhost:8080/wickedlynotsmart/auto-submit-form", data: paramNames, success: function(data, textStatus, jqXHR) { alert(data); //data contains the response from the servlet you posted to. document.location = "http://Where-I-want-to-redirect-to"; } }); return true; }); }, 600000); });
什么都在工作? 使用console.log()
或alert()
来跟踪代码。
您将document
作为字符串传递。
$("document").ready(function() { ...
应该
$(document).ready(function() { ...
关于提交表格的计时器; 你的例子只是将ajaxpost绑定到表单提交事件,它不提交表单或发送ajax请求。
你想要在10分钟后提交表格吗? 用户是否应该能够在此期间选中/取消选中复选框,还是应该选中(未选中)复选框并将其添加到文档准备好的paramNames
?
UPDATE
创造了一个实例 ;
HTML
使用Javascript
$(document).ready(function() { console.log('document ready'); // DEBUG setTimeout(function() { console.log('setTimeout()'); // DEBUG submitForm(); }, 1000 * 5); // 5 seconds $('#myForm').submit(function() { console.log('submit event'); // DEBUG submitForm(); }); }); var submitForm = function() { console.log('submitForm()'); // DEBUG var $checkedInputElements = $('input[type="checkbox"]:checked'); var paramNames = []; $checkedInputElements.each(function() { paramNames.push($(this).attr("name")); }); console.log('paramNames =', paramNames); // DEBUG jQuery.ajax({ type: 'POST', url: '/echo/json/', data: paramNames, complete: function(jqXHR, textStatus) { console.log('Done: ', textStatus); // DEBUG $('input[type="checkbox"]').attr('disabled', true); } }); return true; };