在Ajax调用之后,是否可以使用PHP重定向页面?

时间:2014-07-18 20:33:55

标签: javascript php jquery ajax

我有一个网站,我想为用户提供一个选项,如果他们点击表格的行,他们就会被调到另一个页面(根据表格行的内容)。

所以我所做的基本上是用jQuery收集数据并将其发送到PHP文件。在我的PHP文件中,我想使用header('Location: ***')进行重定向。

这是一种正确的方法吗?因为这样,ajax请求不会返回任何内容,没有成功,没有任何内容,它会在此之前被重定向。

这是我可以使用的路径,还是我想出另一个想法?

4 个答案:

答案 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=XXXXXonclick事件的链接执行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生成行并使用事件侦听器可以做得更好一些,但这应该可行。