【发布时间】:2013-05-24 23:20:07
【问题描述】:
我知道这个问题已被多次回答,但我无法找到一个专门解决我的问题的问题。
我正在制作一个网站,用户可以使用 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成功的警报(顺便问一下,那是如何正确获取响应文本?)
非常感谢任何帮助,我已经被困了很长时间了!
【问题讨论】: