簡體   English   中英

jQuery.get讀取文件並將數據使用到表單中

[英]jQuery.get to read a file and use the data into a form

我希望腳本執行以下操作:

  1. 在頁面加載時,讀取帶有數字的文本文件(僅一行)
  2. 將數字遞增1
  3. 將數字插入表格的<input>框中
  4. 提交<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>

注意事項:

  1. 關閉您的<script>標記(包括jquery庫),然后在其后打開另一個標記。
  2. 無需執行第一個$ .get()-將其保存為函數。
  3. var x = data ++; -在將其值分配給x之后,此操作將遞增數據。 因此,它永遠不會增加。 改用++ data,它在之前遞增。
  4. 之后,您需要將其放置在某處。 輸入的方式(值='x')只是試圖將字符“ x”放入輸入中。 在我的示例中,使用javascript編輯函數值。

您的PHP正常運行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM