我在调用某些服务时得到一些结果,如下所示。
叫:
<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"