<?php
session_start();
$j=0;
?>
<form class="contact100-form validate-form" action="step-3.php" >
<div class="wrap-input100 validate-input bg1 rs1-wrap-input100">
<div class="contact100-form-btn" id="add_driver">
<span>
Add another Driver
<i class="fa fa-long-arrow-right m-l-7" aria-hidden="true">
</i>
</span>
</div>
</div>
</form>
<script>
$("#add_driver").click(function () {
$( "#add_driver_section").replaceWith( "<div class='wrap-input100 validate-
input bg1 rs1-wrap-input100' data-validate = 'Enter Your First Name'> <span
class='label-input100'>Firstname *</span> <input class='input100'
type='text' name='name[]' placeholder='Enter Your First Name ' <?php
if(isset($_SESSION['name'][++$j])){echo "value='".$_SESSION['name']
[$j]."'";}?> ></div>");});
</script>
$_SESSION['name']
是具有多个值的数组。我需要增加$j
的值,以便每次单击$_SESSION['name']
时获得新的索引add_driver
。该代码仅在第一次时有效。其余时间它会打印与第一次相同的值。由于公司规则,我无法向您显示其余的代码或屏幕截图。请告诉我我的代码出了什么问题以及如何实现我要寻找的内容。我只想要一些增加索引的方法。预先谢谢你。
答案 0 :(得分:1)
$ _ SESSION是服务器变量,因此如果不与服务器进行交互,则不能在客户端更改它。我建议您使用AJAX。 单击该按钮时,AJAX请求将加载一个空白页面,该页面会增加$ _SESSION变量。 (同样,您还必须将$ j存储为会话变量,因此您可以对其进行跟踪)
例如:
在名为myFile.php的文件中,您增加了索引并检索了该索引中的名称。
<?php
//this file just increases j everytime is loaded
session_start();
if (isset($_SESSION['j'])){
$_SESSION['j']++;
} else {
$_SESSION['j'] = 0;
}
$result['name'] = $_SESSION['name'][$_SESSION['j']];
die(json_encode($result));
然后在您的按钮:
$("#myButton").click(function (evento) {
jQuery.ajax({
url: "myFile.php",
dataType: "json",
method: "POST",
data: {},
success: function (data) {
alert("The name[j] is " + data.name)
// do here what you did in your button before
// DONT use PHP echos here, use the data.name variable to access the $_SESSION['name'][$j] value
}
});
});
请记住:PHP是前置处理器,因此,当页面在客户端加载时,无论何时打印的PHP都是常量。因此您不能使用回显的值并进行更改。
答案 1 :(得分:1)
还有另一种方法,即发送所有$ _SESSION ['name']变量并在客户端使用它。问题是如果$ _SESSION ['name']在用户加载页面后发生更改,那么他将不会注意到。 所以会像这样: (未经测试,请原谅语法错误)
<script>
var names = JSON.parse("<?php echo json_encode($_SESSION['name']); ?>");
var count = 0;
$("#add_driver").click(function () {
count++;
alert("now the name you needed is here: " + names[count]) //you have the name in names[count], do what you will
});
</script>