2012-05-08 122 views
0

我目前在通過jQuery AJAX函數訪問JSON值時遇到了一些麻煩。第一個警報工作正常,但我得到一個「未定義」警報,第二個值: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); 
     } 
    }); 
});​