在jquery中增加$ _SESSION索引

时间:2018-06-29 05:06:42

标签: javascript php jquery html

<?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。该代码仅在第一次时有效。其余时间它会打印与第一次相同的值。由于公司规则,我无法向您显示其余的代码或屏幕截图。请告诉我我的代码出了什么问题以及如何实现我要寻找的内容。我只想要一些增加索引的方法。预先谢谢你。

2 个答案:

答案 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>