jQuery.get读取文件并将数据用于表单

时间:2015-12-01 17:43:21

标签: javascript php jquery html forms

我希望脚本执行以下操作:

  1. 在页面加载时,读取带有数字(仅一行)的文本文件
  2. 将数字增加1
  3. 将数字插入表单
  4. <input>框中
  5. 提交<form>后,将该号码写入文本文件
  6. 当表单再次加载时,它将重新运行代码并且数字将增加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';
    ?>
    

1 个答案:

答案 0 :(得分:0)

首先:我建议你不要使用javascript,而是在文件的开头用PHP file_get_contents('formdata.txt')执行此操作,然后将其回显。这样,值就会在加载时出现,而不是等待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>

需要注意的事项:

  1. 关闭<script>标记,包括jquery库,然后再打开另一个。
  2. 无需执行第一个$ .get() - 将其保存为函数。
  3. var x = data ++; - 此值在已将值分配给x后递增数据。所以,它永远不会增加。改为使用++数据,然后再增加。
  4. 之后你需要把它放在某个地方。如何输入(value ='x')只是试图将字符“x”放入输入中。使用javascript编辑函数值,如我的示例所示。
  5. 你的PHP工作正常。