网址中的&callback
参数有什么作用?我问的原因是因为我使用jquery的$ .ajax函数运行查询,当我在url的末尾包含&callback=?
时,我得到400(错误的请求)错误。
这是我的javascript代码:
var energy_query_array = [];
var masterEnergyTable_tableid = '145TOXaanydD63tvgVMmCVH0hei0NXNCEK8ekZBg';
var current_date = 'Jan-12';
var energy_query = 'SELECT * FROM ' + masterEnergyTable_tableid;
var encoded_energy_query = encodeURIComponent(energy_query);
var energy_url = ['https://www.googleapis.com/fusiontables/v1/query'];
energy_url.push('?sql=' + encoded_energy_query);
energy_url.push('&key=' + apiKey);
//energy_url.push('&callback=?');
$.ajax({
url: energy_url.join(''),
datatype: 'jsonp',
success: function(data) {
var name_array = data['columns'];
var data_array = data['rows'][0];
for(var i = 1; i < data['columns'].length; i++) {
energy_query_array[name_array[i]] = data_array[i];
}
}
});
console.log(energy_query_array);
我已经注释了我在网址中添加&callback=?
的行,因为当我在查询中保留它时会返回错误:
"message":"Invalid value for parameter callback: ?"
然而,在代码的早期,我使用相同的回调参数对google fusion表执行了类似的查询。
代码末尾的console.log调用向控制台显示一个空数组。
答案 0 :(得分:0)
他们以?
开头,其他参数与&
连接在一起。除非编码,否则?
永远不应该是字符串的开头。
然后,密钥值对可供服务器使用,因为这是执行标准GET请求的方式。
例如:
http://myserver.com?name=josh&age=24&state=il
您的网络服务器可能在某处阻塞了查询字符串。
答案 1 :(得分:0)
回调用于JSONP请求,这些请求在执行跨域请求以获取JSON数据时无意使用。它不使用XHR包装器,而是使用脚本标记,然后传递一个回调查询字符串参数,该参数指向用于执行传入内部所有JSON数据的函数。通过这种方式,您可以拥有一个不知道应用程序如何工作的数据点,但是当您传入回调时,它将使用数据触发函数。这允许您从任何浏览器使用它的API。
答案 2 :(得分:0)
与查询字符串中的任何其他数据(或主机名和片段ID之间的任何其他位置)一样,它向服务器提供一些数据。其含义完全取决于该服务器上运行的软件。
有一个约定使用callback
作为值的键,该值将用作在RESTful API中调用JSON-P响应的函数的名称。 JSON-P是一种为不支持CORS的浏览器提供跨源可访问的Web服务的方法。
e.g。
http://example.com/foo?callback=asdf
会给你
asdf([1,2,3]);
显然,JSON-P要求服务器支持发送JSON-P响应。如果您尝试使用jQuery执行跨源请求,它将(默认情况下)修改请求,前提是服务器将支持具有通常约定的JSON-P。