Я использую следующий код, чтобы сделать запрос междоменного AJAX с YQL:
Попадая ничего, делая Междоменный запрос AJAX с YQL
function requestCrossDomain(site, callback) {
function cbFunc(data) {
// If we have something to work with...
alert("inside call back");
if (data.results[0]) {
// Strip out all script tags, for security reasons.
// BE VERY CAREFUL. This helps, but we should do more.
data = data.results[0].replace(/<script[^>]*>[\s\S]*?<\/script>/gi, '');
// If the user passed a callback, and it
// is a function, call it, and send through the data var.
if (typeof callback === 'function') {
callback(data);
}
}
// Else, Maybe we requested a site that doesn't exist, and nothing returned.
else throw new Error('Nothing returned from getJSON.');
}
// If no url was passed, exit.
if (!site) {
alert('No site was passed.');
return false;
}
// Take the provided url, and add it to a YQL query. Make sure you encode it!
var yql = 'http://query.yahooapis.com/v1/public/yql?q=' + encodeURIComponent('select * from html where url="' + site + '"') + '&format=xml&callback=cbFunc';
// Request that YSQL string, and run a callback function.
// Pass a defined function to prevent cache-busting.
$.getJSON(yql, cbFunc);
console.log("outside call back");
}
и вызов выше следующим образом:
requestCrossDomain('http://www.cnn.com', function(results) {
alert(results);
});
Когда я запускаю приведенный выше код в firefox, хотя ответ (в консоли firebug) показывает содержимое веб-сайта внутри функции обратного вызова (cbFunc), но показывается как предупреждение.
Также результат console.log("inside call back")
в строке 5 не печатает в консоли firebug.
Может ли кто-нибудь предложить мне, где все идет не так, или какое-либо объяснение выше?
кстати я уже прошли через:
http://tek-insight.blogspot.in/2010/05/cross-domain-ajax-request-proxy-json.html http://net.tutsplus.com/tutorials/javascript-ajax/quick-tip-cross-domain-ajax-request-with-yql-and-jquery/ Возможное объяснение в соответствующих вопросах StackOverflow.
она показывает «ошибка» и «полный» в консоли. можете ли вы объяснить, почему? –
Это означает, что ответ не возвращал заголовок успеха с кодом 200, но возвращал что-то еще. Я изменил ответ выше, который теперь содержит дополнительные поля в обратном вызове, которые вы можете проверить. – moka
показывает: "error parsererror SyntaxError {}" –