1
function do_login()
{
$('.loginsubmit').click(function(e)
{
    var datum=$('.loginform').serialize();
    $.ajax({
        type: "POST",
        url: "login",
        data: datum,
        contentType: "application/json; charset=utf-8",
        dataType:"json",
        success: function(data)
        {
            if(data.prop=="false")
            {
                $('p#login-error-notif').text(data.error);
            }
            else if(data.prop=="true")
            {
                $('#logindrp span').text("Welcome "+data.name);
            }
        }
    });            
});
} //closing do_login function

これは、ユーザーが [ログイン] ボタンをクリックしたときに呼び出される関数です。表示されるエラーは Uncaught reference error: 'prop' of null. です。

PHPページのコードは

        if(isset($_POST['username']))
        {
         $username=$_POST['username']

...// proceed with checking the username and password

    if($check_login)
    {
    $return=array(prop=>"true", name=>$name, username=>$username);  
        echo json_encode($return);  
    }
            else
            {
            $return=array(prop=>"false", error=>"Invalid username/password.");  
        echo json_encode($return);
            }


        }

しかし、この部分が実行されていないことがわかりました。つまり、「ユーザー名」はページに送信されません。その中にコードを追加して確認しましsetcookie("username", $username);た。Cookie は作成されません。私の AJAX リクエストの問題は何ですか?

4

2 に答える 2

1

AJAX 呼び出しのcontentTypeプロパティは、サーバーに送信されるデータの形式を設定します。デフォルトでは、PHP は JSON を受け入れません。AJAX 呼び出しから contentType 行を削除します。

デフォルトでは、JQuery はデータを として送信します。これは、PHP スクリプトが配列を適切application/x-www-form-urlencoded; charset=UTF-8に埋めるために必要となる可能性が高いものです。$_POST

これは、ユーザー名の値が設定されていない理由を説明しています。これは、人々が常に犯す非常に一般的な間違いでもあります。

于 2013-08-08T12:39:01.440 に答える
0

次のエラーを解決した後、うまくいきました。

  1. contentType: "application/json; charset=utf-8",ありがとうございます

  2. prop変数、errorusernameを単一のコードで囲みます。

于 2013-08-08T13:18:37.057 に答える