можно ли отправить веб-запрос из браузера пользователя в другой API, а затем обработать результат, отправленный обратно ??
я пробую следующий ajax-код, но он не работает, мне было интересно, возможно ли это или нет, и если да, как я могу его реализовать ...
$(document).ready(function() { $.ajax({ type: "GET", url: "http://api.ipinfodb.com/v2/ip_query.php?key=a9a2b0ec2c4724dd95286761777b09f1c8e82894de277a5b9d7175fa5275f2da&ip=&output=xml", dataType: "xml", success: function(xml) { alert("sucess"); $(xml).find('Ip').each(function() { var ip = $(this).find('Ip').text(); alert(ip); }); } }); });
Из-за того же ограничения политики происхождения вы довольно ограничены в отправке запросов AJAX только на свой собственный домен. JSONP - это обычный обходной путь, но удаленный сайт должен его поддерживать.Другой обходной путь заключается в создании сценария на стороне сервера в вашем домене, который будет служить мостом между вашим доменом и удаленным доменом и просто делегирует AJAX-запрос, отправленный ему из javascript.
Просто добавьте к тому, что уже было сказано: если вы не можете создать свой собственный JSONP-прокси, вы можете использовать YQL-сервис , который создает этот прокси для вас.Обратите внимание, что YQL обернет ваши данные своими собственными метаданными (если только нет способа отключить это ...).
Кстати, вы должны использовать вывод JSON вместо вывода XML из вашей службы API.JSON является более легким форматом и поэтому более адаптирован для Web.
Ниже приведен полностью функциональный пример с URL вашего API (на этот раз выводится JSON) и YQL:
var apiRequestUrl = "http://api.ipinfodb.com/v2/ip_query.php?key=a9a2b0ec2c4724dd95286761777b09f1c8e82894de277a5b9d7175fa5275f2da&ip=&output=json"; var yqlRequestUrl = "http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20json%20where%20url%20%3D%20%22"; yqlRequestUrl += encodeURIComponent(apiRequestUrl); yqlRequestUrl += "%22&format=json&callback=?"; $.getJSON(yqlRequestUrl, function(jsonData) { alert(jsonData.query.results.json.Ip); });
Наконец,эта статья может пригодиться: http://www.wait -till-i.com / 2010/01/10 / loading-external-content-with-ajax-using-jquery-and-yql /
Должно быть возможно, я сделал то же самое.
НО у вас должны быть страницы на одном сервере, вы не можете отправить запрос на другой сервер, в этом случае вам придется использовать прокси на вашем сервере для ретрансляции вызова.