访问括号内的 JSON 数据 - home({"a": { "prop1": "data", "prop2": "data"});

Access JSON data inside brackets - home({"a": { "prop1": "data", "prop2": "data"});

我在调用某些服务时得到了一些结果,如下所示。

通话:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>

<script>
    function getData() {    

        var clientID = '123';
        var pageName = 'home';
        var serviceURL = 'https://service.com/meta?_callback=home&_o=' + clientID + '&_t=' + pageName + '';     

        $.ajax({
            url: serviceURL,
            method: 'GET',
            aynch:true,
            success: function (data) {   
                console.log(data);
            },
            error: function (data, textStatus, errorThrown) {
                alert('Service Call Error '+ errorThrown);
            }
        });
    }
</script>

响应:

home({
      "a": {
       "prop1": "data",
        "prop2": "data"
      },
      "b": {
        "prop1": "data",
        "prop2": "data"
      }
});

如何使用 JavaScript 访问此结果的数据?

这看起来很像 JSONP 响应!

阅读什么是 JSONP (http://en.wikipedia.org/wiki/JSONP)

<!-- call api -->
<script src="http://api.url.com?callback=home"></script>
<script>
     // handle response
     function home(data) {
         console.log(data);
     }
 </script>

如果是 JSONP 你必须定义 home 函数,例如:

var result;

window.home = function(data) {
  result = data;
}

然后就可以获得道具

result.a.prop1 // "data"

解法:

感谢您提供所有宝贵的答案。刚好是JSONP响应。

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script src="'https://service.com/meta?_callback=home"></script>

<script>
    function home(data){
        console.log(data);
    }

    function getData() {    

        var clientID = '123';
        var pageName = 'home';
        var serviceURL = 'https://service.com/meta?_callback=home&_o=' + clientID + '&_t=' + pageName + '';     

        $.ajax({
            url: serviceURL,
            method: 'GET',
            jsonpCallback: 'home',
            dataType: 'jsonp',
            aynch:true,
            success: function (data) { 
            },
            error: function (data, textStatus, errorThrown) {
                alert('Service Call Error '+ errorThrown);
            }
        });
    }
</script>

参考资料:

https://learn.jquery.com/ajax/working-with-jsonp/

http://www.sitepoint.com/jsonp-examples/