2012-03-01 14 views
0

次のjqueryコードブロックを記述しました。自分のサイトで郵便番号が変更されると、このコードは実行されますが、郵便番号が最初に変更されたときにのみ完全に機能します。コードに3つのアラートを入れました。コードブロックが一度実行されると、私は3番目の警告までは行かない。何か間違っているのですか?jquery codeブロックは一度だけ成功しました

$('#postcodefield').change(function(){ 
    var newPC = $(this).val() 
    var areaData = null; 
    var MAPITURL = "http://mapit.mysociety.org/postcode/"; 
    var postcodeUrl = MAPITURL + newPC; 

    $('#gpQueryTerm').val(newPC); 

    $.ajax({ 
     type : 'GET', 
     async: false, 
     url : postcodeUrl, 
     dataType : 'json', 
     error: function(){ 
      $('input[name=town]').val(6); 
     }, 
     success: function(data){ 
      alert('1'); 
      areaData = data; 
      alert('2'); 
      // Extract the ward number 
      ward = areaData.shortcuts.ward; 
      wardCode = areaData.areas[ward].codes.ons; 
      // now we have the ons, get the townsend value from the db 
      alert('3'); 
      $.post("/tasks/getTownsend.cfm", { 
       code: wardCode 
      }, function(data){ 
       $('input[name=town]').val(data); 
      }); 
     } 
    }); 
}); 

事前に感謝

ジェームズ

+0

間違いはありますか? – Jivings

+0

いいえ、私はコンソールを見ていてエラーはありませんか? –

+0

FirebugやFiddlerのようなデバッグツールを使って送信されたリクエストや応答が返ってくるのを見てみましたか? –

答えて

0

第三アラートが呼び出されることはありませんされている場合は、その後にエラーがでなければなりません。

だ問題のデータを考慮する
ward = areaData.shortcuts.ward; 
wardCode = areaData.areas[ward].codes.ons; 

私が与えることができる最も詳細な答え。私はあなたがJSONの応答を見て、それがあなたが期待しているものであることを確認することをお勧めします。

+0

ご協力いただきありがとうございます。私はそれが騒がれていると思う。私は 'areaData.shortcuts.ward'を使用していたセカンドポストコードが文字列として返されるのではなく、オブジェクトとして返されました。変数が文字列かどうかをテストする方法はありますか? –

+0

@JamesPrivettはい、あなたは 'if(obj typeof 'string')' – Jivings

関連する問題