1

很简单,作为浏览器样式的 UI,我试图在两个文本框中读取两个参数(由用户提供),将它们保存在服务器上的纯文本文件(特别是 csv,但这并不重要)中,但不会停在那里,为了确保这些已正确保存,并且作为对用户的反馈,我想将新保存的参数从文件读回同一页面上的其他两个文本框中。

当页面加载时,jquery 使用 php.ini 使用从服务器 csv 文件中读取的值成功填充“当前保存的设置”文本框。当我输入新值,然后单击 [提交] 按钮保存这些值时,服务器文件将成功更新。

这是问题出现的下一步,我可以使用 php 从服务器文件中读取新存储的值并“警告”它们以检查它们是否正确,但 jquery 行更新“当前保存的设置”不会更新。我必须刷新网页才能更新这些文本框。我应该说“警报”显示正确的(新保存的)值,所以到目前为止一切正常,只是以下两条在页面加载时工作的 jquery 行此时似乎没有执行。

希望我在这里缺少一些简单的东西。

(csv 文件本身只是一个完全独立且不相关的软件使用的两个参数。)

非常感谢帮助。

php文件如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>System Settings</title>
    <link rel="stylesheet" href="http://code.jquery.com/ui/1.10.2/themes/smoothness/jquery-ui.css" />
    <script src="http://code.jquery.com/jquery-1.9.1.js" type="text/javascript"></script>
    <script src="http://code.jquery.com/ui/1.10.2/jquery-ui.js" type="text/javascript"></script>


<?php
    $SystemSettings = explode(",",file_get_contents('Data/Settings.csv'));        
?>

<script type="text/javascript">
    $(document).ready(function () {                       

        $("#txtStoredParam1").val("<?php echo $SystemSettings[0] ?>");
        $("#txtStoredParam2").val("<?php echo $SystemSettings[1] ?>");

        $("#btnSaveSettings").button();

    });             
</script>

</head>
<body>

<?php
if(isset($_POST['submit'])) 
{
    $File = "Data/Settings.csv"; 
    $Handle = fopen($File, 'w');
    $Data = $_POST['Param1'] . "," . $_POST['Param2']; 
    fwrite($Handle, $Data);
    fclose($Handle);
    $SystemSettings = explode(",",file_get_contents('Data/Settings.csv'));

?>
    <script>
       // alert("<?php echo $SystemSettings[0] ?>");
       // alert("<?php echo $SystemSettings[1] ?>");
         $("#txtStoredParam1").val("<?php echo $SystemSettings[0] ?>");
         $("#txtStoredParam2").val("<?php echo $SystemSettings[1] ?>");
    </script>
<?php
}
?>


<form id="Form" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>" name="SettingsForm" target="iFormResponse">
<h2>Parameter 1:</h2>
<input id="txtParam1" type="text" name="Param1" />
<h2>Parameter 2:</h2>
<input id="txtParam2" type="text" name="Param2" />

<p>&nbsp;</p>

<p><input id="btnSaveSettings" type="submit" value="Save Settings" name="submit" /></p>

<p>&nbsp;</p>

<h3> Currently Saved Settings: </h3>
<p> <label id="lblParam1">Parameter 1: </label><input id="txtStoredParam1" type="text" name="StoredParam1" />
<label id="lblParam2">Parameter 2: </label><input id="txtStoredParam2" type="text" name="StoredParam2" /></p>

</form>

<iframe name="iFormResponse" width="300" height="200" Style="display:none;"></iframe>

</body>
</html>
4

1 回答 1

0

Your first script block used $(document).ready() whereas the second does not. Therefore, the second block runs first and is overridden by the second.

Delete the second block and move the code for the first block to the end of the page so that you have only one script block that is reused in both cases.

But since you are using forms and PHP, why not just set the value of the input?

<input id="txtParam2" type="text" name="Param2" value="<?php echo $systemSettings[0];?>" />
于 2013-05-22T03:10:09.607 回答