2016-03-30 7 views
0

私は、ユーザーがログインすることができなかったときに表示されるようにブートストラップ警告を取得しようとしている。失敗したログイン時にAjaxを介したPOST PHPエラー

これを行うために、私はアヤックス(jQueryの)を使用してポスティングしています私のjQueryの

$message = "Your Email or Password combination were incorrect. Please try again."; 
echo json_encode($message); 
header('Location: /'); 

と:私のindex.phpここ

上のスクリプトへのリダイレクト時にエラーが、login.php上のPHPで

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> 
<script> 
    $(document).ready(function() { 
     $.ajax({ 
      type: "POST", 
      url: $(this).attr('action'), 
      data: "message", 
      success: function (response) { 
       var message = jQuery.parseJSON(message); 
       $('#alert').text(message); 
      } 
     }) 
    }); 
</script> 

私は何を達成しようとしていることである:行1列1の時、予想外の文字:私は不正なログインを行うと

User tries to log in (and fails) 
Redirected to home page (as my login form is in the header) 
Error alert is shown, with the $message content as the error text. 

は私が

JSON.parseを取得(エラーをトリガするために) JSONデータ

私はまだjQueryの初心者ですが、他の例に従うようにしています。これは、おそらく私のコードが意味をなさない(なぜそれが動作しないのか)理由です。

Firefoxでfirebugを使用してjQueryをデバッグしています。 $(this).attr('action')あなた$.ajax呼び出しでやっている:あなたの時間

+0

あなたのajax関数呼び出しスクリプトは何ですか?それは 'login.php'ですか? – Keeleon

+0

メッセージが存在しない場合、これは(jQuery.parseJSON(message);)エラーを起こすと思います。おそらくあなたがやりたいことは '' '' '' '' '' '変数です。また、php ajaxコードはあなたの期待される応答をエコーするだけで、ヘッダのリダイレクトはしません。 – georaldc

+0

はい、私のajax関数はlogin.phpを呼び出しています – PublicDisplayName

答えて

0

ため

おかげで私はあなたのエラーが行が何の誤解であると考えています。

あなたのコードを実行すると、機能は完全に動作します...現在のページを読み込むことを除いて!それはまさにあなたが言ったことです。 url:パラメータに$(this).attr('action')を送信すると、現在のページを読み込むようにajax関数に指示したばかりです。現在のページはjavascriptであり、おそらくHTMLが定義されているため、応答は無効ですJSON。あなたが何をしたいか

は変化です:

url: $(this).attr('action'), 

へ:

url: 'path/to/login.php', 
+0

これを変更すると、応答は "JSON.parse:JSONデータの第1行第1列の予期しない文字"となります。これはスクリプトの未定義のログイン変数です。ログインしようとしていません。不正なログインを使用すると、index.phpにリダイレクトするのではなく、login.phpページの$ message変数が返されます。 – PublicDisplayName

+0

@PublicDisplayName ajax呼び出しで読み込まれたスクリプトがユーザーをリダイレクトすると想定していますか? – Keeleon

+0

私がしたいのは、ユーザーがフォームに記入してフォームを送信し、データがlogin.phpスクリプトに送られるということです。そこからログイン資格情報が一致しません。これはpasswordverify()に失敗します。私のelseステートメントでは、エラーメッセージは$ message変数に格納され、ユーザーはインデックスページにリダイレクトされ、警告メッセージに$ messageの内容がエコーされ、ログインに失敗したことを知らせます。 – PublicDisplayName

0

私はタイプを変更し、コンマを削除 行わ

しようとするJSON要求とチャゲを成功させますこの

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> 
 
    <script> 
 
    $(document).ready(function() { 
 
    $.ajax({ 
 
     method: "POST", 
 
     url: $(this).attr('action'), 
 
     data: "message", 
 
     dataType: "json"}).done(function() { 
 
     var message = jQuery.parseJSON(message); 
 
     $('#alert').text(message); 
 
    }) 
 
    }

+0

あなたが言ったことを使用しますが、アクションはありません。また、Firebugログにもエラーはありません。 – PublicDisplayName

関連する問題