Как использовать значение из запроса AJAX в качестве значения в ассоциативном массиве в JQuery

0

Я использую ziptastic для возвращения города и состояния из заданного почтового индекса. Он возвращает состояние как полное имя, и я пытаюсь преобразовать состояние в аббревиатуру, как только данные будут получены из запроса ajax с помощью jquery. Проблема, с которой я столкнулась, заключается в том, чтобы напечатать результат в моем массиве, чтобы вернуть его в аббревиатуру. Вот мой код, чтобы вы могли лучше понять, что я пытаюсь сделать.

var states = new Array (                    
    {'Alabama':'AL'},          
    {'Alaska':'AK'},
    {'Arizona':'AZ'},          
    {'Arkansas':'AR'},         
    {'California':'CA'},
    {'Colorado':'CO'},         
    {'Connecticut':'CT'},      
    {'Delaware':'DE'},
    {'Florida':'FL'},          
    {'Georgia':'GA'},          
    {'Hawaii':'HI'},
    {'Idaho':'ID'},            
    {'Illinois':'IL'},         
    {'Indiana':'IN'},
    {'Iowa':'IA'},             
    {'Kansas':'KS'},           
    {'Kentucky':'KY'},
    {'Louisiana':'LA'},        
    {'Maine':'ME'},            
    {'Maryland':'MD'},
    {'Massachusetts':'MA'},    
    {'Michigan':'MI'},         
    {'Minnesota':'MN'},
    {'Mississippi':'MS'},      
    {'Missouri':'MO'},         
    {'Montana':'MT'},
    {'Nebraska':'NE'},         
    {'Nevada':'NV'},           
    {'New Hampshire':'NH'},
    {'New Jersey':'NJ'},       
    {'New Mexico':'NM'},       
    {'New York':'NY'},
    {'North Carolina':'NC'},   
    {'North Dakota':'ND'},     
    {'Ohio':'OH'},
    {'Oklahoma':'OK'},         
    {'Oregon':'OR'},           
    {'Pennsylvania':'PA'},
    {'Rhode Island':'RI'},     
    {'South Carolina':'SC'},   
    {'South Dakota':'SD'},
    {'Tennessee':'TN'},        
    {'Texas':'TX'},            
    {'Utah':'UT'},
    {'Vermont':'VT'},          
    {'Virginia':'VA'},         
    {'Washington':'WA'},
    {'West Virginia':'WV'},    
    {'Wisconsin':'WI'},        
    {'Wyoming':'WY'}
);

$(document).ready(function() {
    var zip = $('#zipCode').html().substr(0, 5);
    $.ajax({
      url: 'http://zip.elevenbasetwo.com/v2/US/'+zip,
      cache: false,
      type: 'GET',
      success: function(result, success) {
            $('#city').text(result.city);
            $('#city').children().andSelf().each(function(){
                $(this).html( capitalize_first_letter($(this).text() ) );
            });
            $('#state').text(states[result.state]);
        },
      error: function(result, success) {
            $('#city').hide();
            $('#state').hide();
            $('#zipCode').hide();
        }
    });
});

Мой код работает раньше, но возвращает полное имя состояния. Я пытаюсь взять result.state и использовать его в массиве, чтобы вернуть аббревиатуру.

  • 5
    Штаты должны быть объектом, а не массивом: var states = {'Alabama':'AL', 'Alaska':'AK', etc...};
  • 0
    Вау, так просто, я не могу поверить, что все испортила. Благодарю. Вы можете представить в качестве ответа, если хотите.
Теги:

1 ответ

0

Ответ выше на 100% правильный, но там мы идем только ради удовольствия!

var shortcode;

states.forEach(function(state) {
  for (i in state) {
    if (i==result.state) {
      shortcode = state[i];  
    }
  }
})
  • 0
    извините, комментарий выше ответил на вопрос. состояния var должны быть объектом, а не массивом. Спасибо хоть.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню