访问括号内的 JSON 数据 - 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响应。

<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/

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

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

然后你可以得到道具

result.a.prop1 // "data"

最新更新