1

我有一个 ajax 调用(来自 jquery)到 login.php 并收到一个 json 响应,如-{“response”:{“error”:“false”,“user_id”:“141”,“name”:“as”} }。现在我想将用户重定向到 home.php,但不知道如何。任何建议或示例代码将不胜感激。

谢谢!!

4

4 回答 4

1

在使用 JSON 输入的函数中,简单检查响应值(或您想要的任何其他条件),如果匹配,则执行重定向:

$.post("action.php", { email: email, password:pass, action:action }, function(json)
{
    if (json.response.error)
        $(window.location).attr('href', 'home.php?id=' + json.response.user_id);
}, 'json');

在更一般的情况下,您还需要检查 login.php 是否确实返回,即您提供了成功和失败处理程序;成功处理程序,如果 JSON 存在,如果响应格式正确,则执行其操作;所有其他情况将重定向到 home.php。

考虑添加一个对话框来向用户解释到底发生了什么,并将位置重定向放在对话框关闭处理程序中。

考虑一下:您的整个响应似乎都在一个名为“响应”的字典中。这不是必需的,并且强制编写类似json.response.errorandjson.response.user_id而不是json.user_id.

另外,我假设登录也在会话中保存登录信息;我不会相信重定向的 id。如果您这样做了,任何使用 FireBug 的用户都可以使用相同的密码以任何其他用户身份登录。

// action.php
// receive parameters
if ($login_ok)
{
    $_SESSION['user_id'] = $user_id;
    Header('Content-Type: application/json');
    die(json_encode(array(
        'user_id' => $user_id,
        ...
    )));
}
// Send along the error

然后你重定向到没有 user_id 的 home.php,home.php 从会话中恢复 user_id。

于 2012-07-22T11:13:08.507 回答
0

如果您的代码运行良好并且您只需将用户重定向到新的 URL。使用此 JavaScript 代码:

window.location.href = "http://www.google.com.pk"; //whichever URL you want
于 2012-07-22T11:09:58.180 回答
0

你需要检查响应,看看是否有错误?尝试这样的事情:

$.ajax({
  url: 'ajax/test.html',
  dataType: json,
  success: function(data) {
      //login success
      if(!data.response.error){
         windown.location='/home.php';
      }else{
         ...
      }
   }

});

于 2012-07-22T11:11:56.170 回答
0

如果您想使用 Javascript 进行重定向,可以使用以下代码

window.location = "http://www.google.com/";

如果要使用 php 进行重定向,可以使用以下代码

header('Location: http://www.example.com/');
于 2012-07-22T11:12:33.920 回答