我正在尝试对生成xml的googlesuggest页面进行ajax调用。我使用了一个似乎有用的小hack并记录在案here 代码是这样的:
$.ajax({
url: 'https://suggestqueries.google.com/complete/search',
data: {
client: 'firefox',
q: word,
},
dataType: 'jsonp'
})
.done(function(dataWeGotViaJsonp){
var len = dataWeGotViaJsonp.length;
for(var i=0;i<len;i++){
alert(dataWeGotViaJsonp[i]);
}
});
我的扩展程序中的控制台中没有出现任何错误,但它不会生成任何内容。我应该如何使它正常工作或它有什么问题?
从this返回的数据:如下所示:
["ob",["obama","obamacare","obituaries","obey","oblivion","obama phone","oberlin college","obama gun control","obagi","obsidian"]]
其中“ob”是搜索词。
更新:
这是我在本帖子中提供的第一个链接的说明后,用$ .getJSON替换$ .ajax的代码。
function process(word){
$.getJSON("https://suggestqueries.google.com/complete/search?callback=?",
{
"jsonp":"suggestCallBack", // jsonp callback function name
"q":word, // query term
"client":"firefox" // force youtube style response, i.e. jsonp
}
);
suggestCallBack= function(dataWeGotViaJsonp){
alert("asdas");
var len = dataWeGotViaJsonp.length;
for(var i=0;i<len;i++){
alert(dataWeGotViaJsonp[i]);
}
};
};
更新2:
我在client:说明符下用'youtube'替换了关键字'firefox',它现在返回如下内容:
window.google.ac.h
(
["ob",[["obama",0,[]],
["obamacare",0,[]],
["obituaries",0,[]],
["obey",0,[]],
["oblivion",0,[]],
["obama phone",0,[]],
["oberlin college",0,[]],
["obama gun control",0,[]],
["obagi",0,[]],
["obsidian",0,[]]],
{"k":1,"q":"I3uqQqdI9GsurIoEbRJwRQ_P7Co"}]
)
我不知道如何实际解析。我很好奇为什么它不能在标准的谷歌搜索下工作。可以在JSfiddle上找到用于测试目的的非常好的工具。
答案 0 :(得分:0)
我设法让它工作但它的行为有点不同,比这个链接指定的更奇怪。事情是我从$ .ajax切换到$ .getJSON调用,我使用了文档中指出的内容,并且实际得到了谷歌搜索结果(已检查),即使我使用了client: 'youtube'
说明符。我认为现在谷歌使用它为youtube和谷歌搜索或他们混淆了某种程度。
$.getJSON("https://suggestqueries.google.com/complete/search?callback=?",
{
"jsonp":"suggestCallBack", // jsonp callback function name
"q":query, // query term
"client":"youtube" // force youtube style response, i.e. jsonp
}
);
suggestCallBack = function (data) {
var suggestions = []; //creates void array
$.each(data[1], function(key, val) {
suggestions.push(val[0]); //moves every suggestion from the word into the array
})
suggestions.length = 1; //restricts the array to only the first element
suggestions = []; //resets the array to void for future calls
};
这对我来说非常合适,它应该对任何人都有用。我认为它也可以与$.ajax
一起使用,但只能使用client: 'youtube'
。