簡體   English   中英

在jQuery中增加$ _SESSION索引

[英]Incrementing $_SESSION index in jquery

<?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的值,以便每次單擊add_driver時獲得新的索引$_SESSION['name'] 該代碼僅在第一次時有效。 其余時間它會打印與第一次相同的值。 由於公司規則,我無法向您顯示其余的代碼或屏幕截圖。 請告訴我我的代碼出了什么問題以及如何實現我要尋找的內容。 我只想要一些增加索引的方法。 先感謝您。

$ _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都是常量。 因此您不能使用回顯的值並使它們更改。

還有另一種方法,就是發送所有$ _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>

暫無
暫無

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

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