我希望脚本执行以下操作:
- 在页面加载时,读取带有数字的文本文件(仅一行)
- 将数字增加 1
- 将数字插入
<input>
表格框 - 一次
<form>
提交后,将编号写入文本文件
当表单再次加载时,它将重新运行代码,并且数字将增加 1。这基本上是在表单提交之前用唯一且渐进的数字预先填充字段。
我目前正在使用 jQuery、PHP,当然还有 HTML:
HTML:
<html>
<head>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8/jquery.min.js">
$.get("http://www.domain.com/tools/formdata.txt");
function test(){
$.get('http://www.domain.com/tools/formdata.txt', function(data){
x = data++;
});
}
</script>
</head>
<body onload="test()"/>
<form action="save_json.php" method="post">
Contract: <input type="number" name="contract" id="contract" value="x" /><br />
<input type="submit" id="submit" value="Invia" />
</form>
</body>
</html>
PHP
<?php
if(isset($_POST['contract'])) {
// if form fields are empty, outputs message, else, gets their data
if(empty($_POST['contract'])) {
echo 'All fields are required';
}
else {
// adds form data into an array
$formdata = $_POST['contract'];
if(file_put_contents('/var/www/domain/tools/formdata.txt', $formdata)) echo 'Data successfully saved';
else echo 'Unable to save data, try again or contact IT';
}
}
else echo 'Form fields not submitted';
?>
最佳答案
首先:我建议您使用 PHP file_get_contents('formdata.txt')
来代替 javascript。在文件的开头,然后回显它。这样,该值将在加载时出现,而不必等待 HTML 呈现和 javascript 运行。此外,这是一种更好的做法,如果您选择扩展页面,可以让您做更多的事情。
但是,以下是所提出问题的解决方案:
<html>
<head>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8/jquery.min.js"></script>
<script>
var x;
function test(){
$.get('file.txt', function(data){
console.log('data',data);
var x = ++data;
console.log('x',x);
$('#contract').val(x);
});
}
</script>
</head>
<body onload="test()"/>
<form action="aoeu.php" method="post">
Contract: <input type="number" name="contract" id="contract" /><br />
<input type="submit" id="submit" value="Invia" />
</form>
</body>
</html>
注意事项:
- 关闭您的
<script>
标记包含 jquery 库,然后在其后面打开另一个标记。 - 无需执行第一个 $.get() - 将其保存到函数中。
- var x = 数据++; - 这会在将数据的值分配给 x 后递增数据。所以,它永远不会增加。相反,执行++data,它会在之前递增。
- 之后您需要将其放置在某个地方。您如何获得输入(值='x')只是尝试将字符“x”放入输入中。使用 javascript 编辑函数值,如我的示例所示。
你的 PHP 工作正常。
关于javascript - jQuery.get 读取文件并将数据放入表单中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34026660/