【问题标题】:Access JSON data inside brackets - home({"a": { "prop1": "data", "prop2": "data"});访问括号内的 JSON 数据 - home({"a": { "prop1": "data", "prop2": "data"});
【发布时间】:2015-07-08 09:14:16
【问题描述】:

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

致电:

<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 访问此结果的数据?

【问题讨论】:

标签: javascript jquery json jsonp


【解决方案1】:

这看起来很像 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>

【讨论】:

    【解决方案2】:

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

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

    那么你就可以获得道具

    result.a.prop1 // "data"
    

    【讨论】:

      【解决方案3】:

      解决方案:

      感谢您提供的所有宝贵答案。它恰好是一个 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/

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-04-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-02-26
        • 2021-12-23
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多