2012-05-12 35 views
0

私はこのjavascriptを持っています。ログインAJAX呼び出し の成功コールバックで実行AJAX呼び出しが、私は のgetheaderが失敗したに二AJAX呼び出しを意味し、コンソールでこのログを取得 PHP Ajaxログイン、成功したログイン後にAjaxが機能しない

$('.js-div-signin form').submit(function(){ 
    $form = $(this); 
    $isValid = $(this).validate({ 
     rules: { 
      email:'required email', 
      password:'required' 
     } 
    }); 

    if($isValid.form()) { 
     $data = { 
      email:$('.js-input-email',$form).val(), 
      password:$('.js-input-password',$form).val(), 
      remember:$('.js-input-remember:checked',$form).val() 
     }; 

     $('input', $form).attr('disabled','disabled'); 

     $.ajax({ 
      url:'/ajax/login', 
      data:$data, 
      type:'post', 
      dataType:'json', 
      success:function(res){ 
       if(res.type == 'success') { 
        /** 
        * This is the ajax call not working 
        */ 
        $.ajax({ 
         url:'/ajax/getheader', 
         dataType:'html', 
         success:function($html){ 
          $('#header').html($html); 
         } error:function(a, b) { 
          console.log(a); 
          console.log(b); 
         } 
        }) 
       } else { 
        showError(res.message); 
        $('.js-input-password',$form).val(''); 
        $('input', $form).removeAttr('disabled'); 
        $('.js-input-password',$form).focus(); 
       } 
      }, error:function(){ 
       showError('Email or Password incorrect'); 
       $('.js-input-password',$form).val(''); 
       $('input', $form).removeAttr('disabled'); 
       $('.js-input-password',$form).focus(); 
      } 
     }); 
    } 

    return false; 

}); 

を実行されていない正しくなく、 私をlogginされていますエラーはまったく情報を提供しません

> Object 
Error 

アイデアはありますか?

は私が ログインAJAXを通じてPHPがセッションを開始し、クッキーは右の作成、中にログに記録されない、このバグはクッキーや季節

私が最初にしていたように、段階的に関連することができますね?このセッション またはクッキーは現在のページ(私はログインajax呼び出しをしていない場所から)にアクセスできないか、存在しません。

そのため、おそらくPHPは、それがどんな意味を成しています(開始クッキーやセッションが存在しない場合)ページにログに記録されないからセクションにログインし(ここで、セッションとクッキーの出口)の内容をフェッチから

を妨げていますか?ヘルプ

+0

私が留意した2つのこと:#1 - あなたは問題を抱えているAJAXの応答を閉じるセミコロンを持っておらず、成功はタイプ200であり、200なしで成功することはできないので、if =成功は冗長で時間と空間の無駄です。また、プレーンテキストは問題ではないはずですが、適切なMIMEタイプを送り返していることを確認してください。とにかく、OBJECTはあなたのPHPファイルからのJSOn応答であり、解析する必要があるようです。 $ Html.nameのように – Ohgodwhy

+0

私はあなたの名前空間 "js-"が好きですか? –

+0

@Ohgodwhy答えに感謝しますが、あなたはどんな提案でも正しくありません。 #1 semicolons on javascriptは必須ではありません。 #2 res.type == "success"はjson応答を参照しています。私はajax呼び出しから取得しました。これはajaxオブジェクトへの参照をしていません #3 mimetypeは重要ではありません。jqueryに応答を処理する方法を教えているからです。ajax #4オブジェクトがjsXHRオブジェクトまたはエラーコールバックの最初のパラメータであるXMLRequestオブジェクトを参照しています.2番目はタイプ、3番目は空白のエラーメッセージですbtw –

答えて

0

を事前に

おかげでAJAXエラーコールバックは、エラー・メッセージが含まれていますので、最後の1をログに記録するinterrestingことになる3つのパラメータerror(jqXHR, textStatus, errorThrown) に取ることができます。

+0

空です...何も... –

0

ないあなたがやろうとしているが、これは私にはチェーン機能への関数呼び出しのように見えるものを確認してください。

if($isValid.form()) {...} 

それが働いている場合、あなたはAjax呼び出しのIを取得していますそれは大丈夫だとします。

あなたの第二のAJAX呼び出しが成功し、エラーハンドラの間にカンマが欠けているように見える、それはおそらく、あなたのコンソール内の関連する何かを取得していない理由です、次のいずれか

試してみてください。

$.ajax({ 
    url:'/ajax/getheader', 
    dataType:'html', 
    success: function(data){ 
     console.log(data); 
     $('#header').html(data); 
    }, 
    error:function() { 
     console.log('error'); 
    } 
}); 
+0

良い点。あなたは100%正しいですが、それは修正されませんでした、私はそれを正しく持っている、私はそれを間違って貼り付けた機能を貼り付けコピーすることがあります。 '$ isValid = $(this).validate({...'はjqueryバリデータプラグインだけで、 '$ isValid.form()'はフォームを実際に検証するために呼び出す関数です...ありがとうあなたの提案 –

関連する問題