0

フォームの 1 つにこの JavaScript があります。これはログイン フォームです。API スタイルを使用しているフォーム自体から URL を取得します (「コンセプトが正しいかどうかわからない」) が、コードを添付します

var formup = $('#loginfrom');
formup.submit(function () {
    $.ajax({
        type: formup.attr('method'),
        url: formup.attr('action'),
        data: formup.serialize(),
        success: function (data) {
            alert('you have successfuly logged in');
            window.location = "profile.html";
        }
    });

    return false;
});

これがAPIファイルから呼び出された私のログイン関数です

if(!mysql_fetch_array($result)){
return $res;
}
else
    return $resc;

$res は「エラー」を返し、$resc は「正しい」を返します。

そして私のapi.php

if(!isset($function))
        $resp['err'] = "Function: ".$action." does not exist";
    else
        $resp = $function($request);

正しいユーザー名とパスワードを入力すると、正常に機能し、ユーザー プロファイルが表示されます。

しかし、ユーザー名やパスワードを間違えた場合の対処法がわからない プロフィールに誘導されたくない

私は、phpからの戻り値が、ログインが機能しなかったことをjavascriptに伝えてから、何か他のことをする必要があると思います

この問題に関して私に助けを提供してください、私はそれを感謝します。

4

4 に答える 4

1

リクエストは常に成功するため、data変数の値を確認してエラー ページにリダイレクトする必要があります。

...
success: function (data) {
  if ( data == 'correct') {
    alert('you have successfuly logged in');
    window.location = "profile.html";
  } else {
     // handle error
  }
}
...
于 2013-05-16T05:49:06.607 に答える
0

ログインコードをこれに変更します

if(!mysql_fetch_array($result)){
  echo 'failure'; die;
}
else    {
    echo 'success'; die;
}

そして、あなたのajaxの成功をこれに変えてください

success: function (data) {
        if (data == 'success') {
            alert('you have successfuly logged in');
            window.location = "profile.html";
        } else {
             alert('Login Failed');
        }
    }
于 2013-05-16T05:48:05.037 に答える
0

datatype as json を使用して、php から戻り値を取得します。以下のコードで私の提案を確認してください。

$.ajax({
        type: formup.attr('method'),
        url: formup.attr('action'),
        data: formup.serialize(),
        dataType: 'json',
        success: function (data) {

            if(data.error == 0) {
                alert('you have successfuly logged in');
                window.location = "profile.html";
            } else {

                alert("error");
            }
        }
    });

PHP ファイルで、$res と $resc を配列に変換し、後で json_encode を使用します。このような、

if(!mysql_fetch_array($result)){
    echo array('value'=>$res,'error'=>0);
}
else
    echo array('value'=>$res,'error'=>1);
于 2013-05-16T05:49:09.433 に答える
0

データで何かを行うか、PHP で 401 ステータスの代わりに何かを返す場合は、返されたテキストを JavaScript にチェックさせることができます。

var formup = $('#loginfrom');
formup.submit(function () {
    $.ajax({
        type: formup.attr('method'),
        url: formup.attr('action'),
        data: formup.serialize(),
        success: function (data) {
            console.log(data);
            // check your console (press F12 in Chrome or Firefox with firebug plugin)
            // do something if the data is valid.
            window.location = "profile.html";
        }
    });

    return false;
});

PHP でログインが失敗し、401 を返したい場合 (JavaScript の成功関数が呼び出されないため、JS で失敗/エラー関数が必要になる場合があります)。

header("HTTP/1.0 401 Unauthorized");

また、ユーザーがログインの失敗を認識できるように、javaScript に失敗のコールバックを追加する必要があります。

    $.ajax({
        ...
        success: function (data) {
          ...
        },
        error: function(){
           //inform the user
        }
    });
于 2013-05-16T05:56:16.517 に答える