На стороне клиента, используя jQuery, я хочу знать, могу ли я проверить, действительно ли URL ссылки действителен (т. Е. Не возвращает 404). Эта ссылка указывает на другой домен, поэтому, если я просто использую $ .get(), тогда я получаю проблему с разрешением. Я помню, что читал что-то об использовании запроса JSONP, но я не помню.Используйте jQuery, чтобы проверить, является ли URL-адрес другого домена 404 или нет?
ответ
Я нашел решение, которое, кажется, работает (с использованием YQL):
$.getJSON("http://query.yahooapis.com/v1/public/yql?"+
"q=select%20*%20from%20html%20where%20url%3D%22"+
encodeURIComponent(url)+
"%22&format=xml'&callback=?",
function(data){
if(data.results[0]){
// do whatever
}
}
);
предполагает, что URL вы хотите проверить, находится в поле «URL» переменной.
JSONP работает, если сервер, на который вы звоните, может вернуть отформатированный ответ JSONP. Это в основном означает скрипт, который вызывает функцию обратного вызова на вашей странице после загрузки. http://en.wikipedia.org/wiki/JSON#JSONP
В вашем случае это не сработает, если другой сайт не желает сотрудничать, или у вас есть прокси-скрипт на вашем собственном сайте.
Если вы хотите, чтобы ваш скрипт работал с сайтами, которые не под вашим контролем, лучше всего использовать прокси-сервер или хакер iframe.
Вы не можете сделать такой запрос в другом домене. Это функция безопасности в браузере. Возможно, вам придется попробовать что-то сделать в iframe или что-то еще и проверить это.
JSONP не сделает вас много ...
Что вы должны сделать, это создать локальный прокси-сервер легко на вашем сервере, используя ваш любимый язык, который будет просто загрузить URL-адрес, который вы передаете его и вернуть код ответа. Затем используйте jquery ajax для загрузки страницы прокси с URL-адресом, который вы хотите проверить.
У меня нет возможности локального прокси-сервера, к сожалению (у меня есть только определенные параметры настройки, доступные на сервере - некоторые пользовательские места HTML, и я могу загрузить JavaScript). –
Из документов на http://api.jquery.com/jQuery.getJSON/: Если указанный URL находится на удаленном сервере, запрос обрабатывается как JSONP вместо этого. Более подробно см. Обсуждение типа данных jsonp в $ .ajax(). –
@TahirAkhtar Это использует JSONP, чтобы попросить Yahoo пойти и проверить вас, если страница существует. Это похоже на решение локального прокси-сервера, которое другие предложили, но используя сторонний прокси (Yahoo), а не локальный. – rjmunro
А, спасибо большое! вы спасли мне много работы! Это помогает мне создать скрипт, чтобы проверить, не потерян ли URL-адрес на другом сайте. –