[英]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(" ");
}
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.