我有一个网站,我想为用户提供一个选项,如果他们点击表格的行,他们就会被调到另一个页面(根据表格行的内容)。
所以我所做的基本上是用jQuery收集数据并将其发送到PHP文件。在我的PHP文件中,我想使用header('Location: ***')
进行重定向。
这是一种正确的方法吗?因为这样,ajax请求不会返回任何内容,没有成功,没有任何内容,它会在此之前被重定向。
这是我可以使用的路径,还是我想出另一个想法?
答案 0 :(得分:4)
没有
重定向告诉客户端他们刚才请求的资源可以在别处找到。
以前加载的包含该JavaScript的页面不是Ajax请求所要求的资源。但是会返回一些内容 - 它应该获取您重定向到的资源(可在xhr.responseText
中使用(假设相同的原始策略不会干扰,并且您在该地点获得200 OK
响应你正在重定向到)
如果您打算始终重定向,请不要使用Ajax。
如果您打算有时重定向,则需要将URL放在响应的正文中,使用JavaScript解析它,然后将其分配给location
。
答案 1 :(得分:3)
您无法使用PHP重定向,但您可以轻松地使用ajax调用的响应重定向。
请参阅:window.location.replace(...)
答案 2 :(得分:1)
是和否。如果你使用jquery,你的ajax调用用这样的json响应:
{
success : true,
redirect_to : "http://www.google.com"
}
在php中意味着
<?php echo json_encode([
'success' => true,
'redirect_to' => 'http://www.google.com',
]);
那么你的ajax调用者可以完成这项肮脏的工作:
$.get('/your/path', function (json) {
if(json.success) {
document.location.href = json.redirect_to;
}
}, 'json');
我的两分钱。
答案 3 :(得分:0)
我基本上想从行中获取id,当访问者点击该行时,他们应该登陆example.php?id = XXXXX
你可以完全用PHP完成。当您生成表格时,在每一行(我们称之为XXXX
的ID以跟随您的示例)中,您可以包含指向整个行的example.php?id=XXXXX
或onclick
事件的链接执行window.location.href = 'example.php?id=XXXXX';
。所以你的表可能看起来像:
...
<tr onclick="window.location.href = 'example.php?id=1234';">
<td>1234</td><td>some value</td><td>some other value<td>
</tr>
<tr onclick="window.location.href = 'example.php?id=1235';">
<td>1235</td><td>some value</td><td>some other value<td>
</tr>
...
通过使用javascript生成行并使用事件侦听器可以做得更好一些,但这应该可行。