2012-05-08 2 views
0

В настоящее время у меня возникают проблемы с доступом к значениям JSON через функцию jQuery AJAX. Первое предупреждение работает нормально, но я получаю сообщение «undefined» со вторым значением: this.dateOfBirth2.Невозможно получить доступ к значению JSON

Кажется, я могу получить доступ только к значениям, которые хранятся в другом объекте. Довольно странно. Любая идея, как я могу получить доступ к this.dateOfBirth2 таким образом?

Это JS-скрипка. Это не работает, но представьте себе /js/formdata.js - это код <script>. http://jsfiddle.net/LMSmp/1/

JavaScript:

$(document).on('click', function() { 
    $.ajax({ 
     url: '/js/formdata.js', 
     dataType: 'json', 
     success: function (data) { 
     var formData = $(data.formdata); 
     formData.each(function() { 
      alert(this.name.surname); 
      alert(this.dateOfBirth2); 
     }); 
     } 
    }) 
});​ 

JSON:

{ 
    "formdata": { 
    "name": { 
     "salutation": "Dhr", 
     "surname": "Jan", 
     "tussenvoegsel": "van", 
     "lastName": "Boden" 
    }, 
    "dateOfBirth1": 1, 
    "dateOfBirth2": 3, 
    "dateOfBirth3": 2, 
    "nationality": "Nederland", 
    "address": { 
     "zipcode": "1234AF", 
     "houseNumber": 5, 
     "suffix": "", 
     "street": "Kerkstraat", 
     "living": "Amstelveen", 
     "country": "Nederland" 
    }, 
    "contact": { 
     "homeTel": "0123-456789", 
     "mobileTel": "01-23456789", 
     "email":"[email protected]" 
    } 
    } 
} 
+0

Используйте скрипку, где это имеет смысл. Здесь это не так, и гораздо полезнее (всегда!) Включать информацию в ваш вопрос. –

+1

Кажется, что все нормально работает здесь: http://jsfiddle.net/d4tp8/ –

+0

Действительно ли работает первое предупреждение? Строка JSON в скрипте недействительна JSON (у нее есть '' теги). Строка JSON в вопросе отлично подходит для меня. –

ответ

1

Вы передаете объект в JQuery, который не имеет смысла. jQuery предназначен для работы с Элементами DOM. Although it might "work", лучше использовать использование $.each()[docs]:

$.each(data, function() { 
    alert(this.name.surname); 
    alert(this.dateOfBirth2); 
}); 

DEMO

1
$(document).on('click', function() { 
    $.ajax({ 
     url: '/js/formdata.js', 
     dataType: 'json', 
     success: function (data) {   
      alert(data.formdata.name.surname); 
      alert(data.formdata.dateOfBirth2); 
     } 
    }); 
});​ 
Смежные вопросы