我正在尝试编写一个简单的javascript函数来使用ajax和yql检索网页内容。这是功能:
function retrieveDataGet(url){
var encodedUrl = encodeURI(url);
var address = "https://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20html%20where%20url%3D%22"+encodedUrl+"%2Fcategory%2Fnews%2F%22&diagnostics=true";
console.log("Call : "+address+"\n");
$.ajax({
url: address,
method: 'GET',
async: false
}).done(function(data) {
console.log(data);//Here I can see the webpage data
return data;
}).error(function(err){
return "Error";
}).fail(function(){
return "Fail";
});
}
现在,当我调用该函数时,我可以通过“console.log(data)”指令看到控制台上的数据,但是当我尝试这段代码时:
var data = retrieveDataGet("http://www.wikipedia.org/");
console.log(data);//here data is undefined
我得到“未定义”。
我哪里错了?
答案 0 :(得分:0)
你不能这样做:
这样做:
var MyData;
retrieveDataGet("http://www.wikipedia.org/");
console.log(MyData);
功能上的一点修改:
function retrieveDataGet(url){
var encodedUrl = encodeURI(url);
var address = "https://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20html%20where%20url%3D%22"+encodedUrl+"%2Fcategory%2Fnews%2F%22&diagnostics=true";
console.log("Call : "+address+"\n");
$.ajax({
url: address,
method: 'GET',
async: false
}).done(function(data) {
console.log(data);//Here I can see the webpage data
MyData = data;
}).error(function(err){
return "Error";
}).fail(function(){
return "Fail";
});
}
答案 1 :(得分:-1)
function retrieveDataGet(url){
var returnData = "";
var encodedUrl = encodeURI(url);
var address = "https://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20html%20where%20url%3D%22"+encodedUrl+"%2Fcategory%2Fnews%2F%22&diagnostics=true";
console.log("Call : "+address+"\n");
$.ajax({
url: address,
method: 'GET',
async: false
}).success(function(data) {
console.log(data);//Here I can see the webpage data
returnData = data;
}).error(function(err){
returnData = "Error";
}).fail(function(){
returnData = "Fail";
});
return returnData ;
}
检查一下。 请注意 - 最好为函数设置一个return语句。 在Ajax中,返回成功回调数据。