1

login.php への ajax 呼び出し (jquery から) があり、-{"response":{"error": "false", "user_id" :"141","name": "as"} のような json 応答を受け取ります}。ユーザーを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.errorこれは必須ではなく、json.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 に答える