簡體   English   中英

使用jQuery Ajax更新PHP會話變量

[英]Updating PHP session variable using jQuery Ajax

我知道這個問題已經被回答了多次,但是我還沒有找到專門解決我問題的方法。 我正在建立一個網站,用戶可以使用eBay API出售其eBay物品(這有點麻煩!)。 我的問題是結果的分頁:我需要一種更新$_SESSION頁號變量的方法,以便頁面重新加載並顯示不同的結果頁。 我正在使用AJAX進行此操作,這是我第一次使用它。

該過程如下:

1)用戶單擊頁面底部的一個分頁鏈接(例如Google搜索結果底部的鏈接),我將其制成一個帶有隱藏字段的表單,其中存儲了下一個頁面編號,該頁面編號在用戶單擊時會相應更新。

2)使用AJAX在外部頁面上更新所述$_SESSION變量(無需刷新!)

3)重新加載頁面並顯示相應的結果頁面。

問題似乎在步驟2和步驟3之間。我使用的代碼位:

設置$ _SESSION變量

 <?php
  session_start();
  if(!isset($_SESSION['pageNumber']))
  {
    $_SESSION['pageNumber'] = "1";
    echo("Session value NOT set, pageNumber = " . $_SESSION['pageNumber']);
  }
  else
  {
    echo("Session value SET, pageNumber = " . $_SESSION['pageNumber']);
  }
?>

分頁

<form action="">
<div id="pagination" style="text-align:center; <?php if($totalPages == 1) echo('display:none;');?>">
  <?php
    global $totalPages;
    if(intval($_SESSION['pageNumber']) != 1)
    {
      print("<a href=\"\" onclick=\"updatePageNumber(-1);\">Previous Page</a>");
    }
    for($i = 1; $i <= $totalPages; $i++)
    {
      print("<a href=\"\" onclick=\"updatePageNumber('$i');\">$i</a>");
      print("&nbsp;&nbsp;&nbsp;");
    }
    if(intval($_SESSION['pageNumber']) != $totalPages)
    {
      print("<a href=\"\" onclick=\"updatePageNumber(0);\">Next Page</a>");
    }
  ?>
</div>
<input type="hidden" name="nextPageNumber" id="nextPageNumber" value="<?php echo($_SESSION['pageNumber']);?>">
</form>

更新隱藏字段和$ _SESSION值

function updatePageNumber(newNumber)
{
  //Update hidden field
  if(newNumber == -1)
  {
    var num = document.getElementById('nextPageNumber').value;
    num--;
    document.getElementById('nextPageNumber').value = num;
  }
  else if(newNumber == 0)
  {
    var num = document.getElementById('nextPageNumber').value;
    num++;
    document.getElementById('nextPageNumber').value = num;
  }
  else
  {
    document.getElementById('nextPageNumber').value = newNumber;
  }

  //Update $_SESSION value with AJAX
  var dataString = 'nextPageNumber='+ document.getElementById('nextPageNumber').value;  
  $.ajax(
  {  
    url: "scripts/updatePageNumber.php", 
    type: "POST",
    data: dataString,
    dataType: "text",
    success: function(text)
    {
      alert("Done! Response: " + text);
    }

});

和PHP文件

<?php
if (isset($_POST['nextPageNumber']))
{
    session_start();
    die("Made it this far!");
    $nextPageNumber = $_POST['nextPageNumber'];
    $_SESSION['pageNumber'] = $nextPageNumber;
    echo $nextPageNumber;
}
?>

注意:我沒有得到PHP文件的die()方法,也沒有得到AJAX成功的警報(順便說一句,這是如何正確獲取響應文本?)

我非常感謝您提供的任何幫助,我已經為此停留了很長時間了!

您的ajax調用的數據中沒有nextPageNumber ,因此您的PHP腳本(不在$ _POST數組中)看不到它,因此測試失敗。

(作為一般性評論,您的問題涉及太多的工作部件,因此不適合用於此類站點,因為它致力於幫助其他有類似問題的站點。下一次,請隔離導致問題的代碼的大部分。這可能就是為什么您還沒有其他答案的原因-人們在嘗試幫助解決如此全面的問題時厭倦了投票)。

暫無
暫無

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

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