奇怪的jquery ajax怪癖,返回对象是正确的,属性是未定义的

时间:2016-02-26 18:42:29

标签: javascript jquery ajax

我正在寻找这个问题的几个小时,在论坛和SO上阅读了很多,但无法弄清楚我做错了什么。

我的返回对象数据已正确注销,但是一旦我尝试访问属性,它总是未定义的????怎么样?

我尝试在某些SO帖子中将data = JSON.parse(JSON.stringify(data))作为建议的答案,但我的问题仍然存在。

欢迎所有帮助!

                                             BTW:                                        

    <script>
        $(document).ready(function(){
                $("#btw").on('focusout',function () {
                    console.log("BTW validation check. (REST CALL)");

                    var btw = $(this).val();
                    var country_code = btw.substring(0,2);
                    var vat_number = btw.substring(2);

                    console.log("country_code: " + country_code);
                    console.log("vat_number: " + vat_number);

                    $.getJSON('http://vatid.eu/check/'+ country_code +'/'+vat_number, function(data) { 

                        console.log(data); // good object with valid set

                        console.log(data["valid"]); //undefined!
                        console.log(data.valid); //undefined!

                        /*
                        if(data.valid) {
                            $("#order_custom_10").value = true
                        }
                        else {
                            $("#order_custom_10").value = false
                        }
                        */
                    });
                });
        });
    </script>
</body>

1 个答案:

答案 0 :(得分:3)

请求返回的data对象包含一个response对象,其中包含您想要的数据。因此,请使用data.response.valid来获得您想要的内容。

这是来自vatid.eu的JSON对象结构:

{
  "response": {
      "country_code": "DK",
      "vat_number": "30505166",
      "valid": "true",
      "name": "JUSTABOUTIT ApS",
      "address": "Gammeltorv 8 2\n1457 København K\n"
    }
}