繁体   English   中英

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

[英]Is it possible to redirect the page with PHP after an Ajax call?

我有一个网站,我想为用户提供一个选项,如果他们点击表格的行,他们会被重新引导到另一个页面(基于表格行的内容)。

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

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

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

不。

重定向告诉客户端他们刚刚请求的资源可以在其他地方找到。

先前加载的包含该 JavaScript 的页面不是 Ajax 请求请求的资源。 但是会返回一些东西 - 它应该获得您重定向到的资源(这将在xhr.responseText可用(假设同源策略不会干扰并且您在重定向到的位置获得200 OK响应)

如果您打算始终重定向,则不要使用 Ajax。

如果您打算有时重定向,那么您需要将 URL 放在响应正文中,使用 JavaScript 对其进行解析,然后将其分配给location

您不能使用 PHP 重定向,但是您可以使用 ajax 调用的响应轻松重定向。

参考: window.location.replace(...)

是和否。 如果您使用 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');

我的两分钱。

我基本上想从行中获取 id,当访问者点击行时,他们应该登陆 example.php?id=XXXXX

您可以完全从 PHP 执行此操作。 当您生成表格时,在每一行(我们将其 ID 称为XXXX以遵循您的示例)中,您可以包含一个指向example.php?id=XXXXX的链接,或执行window.location.href = '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 生成行并使用事件侦听器可以做得更好一些,但这应该可以工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM