似乎无法访问JSON值

时间:2012-05-08 08:28:34

标签: jquery ajax json alert

我目前在通过jQuery AJAX函数访问JSON值方面遇到了一些麻烦。第一个警报工作正常,但我得到一个带有第二个值的“未定义”警报:this.dateOfBirth2。

似乎我只能访问存储在另一个对象中的值。很奇怪。知道如何以这种方式访问​​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":"me@mail.com"
    }
  }
}

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

您正在将对象传递给jQuery,这没有意义。 jQuery用于处理 DOM元素Although it might "work",最好使用$.each() [docs]

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

DEMO