2010-01-22 1 views
1

На стороне клиента, используя jQuery, я хочу знать, могу ли я проверить, действительно ли URL ссылки действителен (т. Е. Не возвращает 404). Эта ссылка указывает на другой домен, поэтому, если я просто использую $ .get(), тогда я получаю проблему с разрешением. Я помню, что читал что-то об использовании запроса JSONP, но я не помню.Используйте jQuery, чтобы проверить, является ли URL-адрес другого домена 404 или нет?

ответ

4

Я нашел решение, которое, кажется, работает (с использованием 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» переменной.

+0

Из документов на http://api.jquery.com/jQuery.getJSON/: Если указанный URL находится на удаленном сервере, запрос обрабатывается как JSONP вместо этого. Более подробно см. Обсуждение типа данных jsonp в $ .ajax(). –

+0

@TahirAkhtar Это использует JSONP, чтобы попросить Yahoo пойти и проверить вас, если страница существует. Это похоже на решение локального прокси-сервера, которое другие предложили, но используя сторонний прокси (Yahoo), а не локальный. – rjmunro

+0

А, спасибо большое! вы спасли мне много работы! Это помогает мне создать скрипт, чтобы проверить, не потерян ли URL-адрес на другом сайте. –

1

JSONP работает, если сервер, на который вы звоните, может вернуть отформатированный ответ JSONP. Это в основном означает скрипт, который вызывает функцию обратного вызова на вашей странице после загрузки. http://en.wikipedia.org/wiki/JSON#JSONP

В вашем случае это не сработает, если другой сайт не желает сотрудничать, или у вас есть прокси-скрипт на вашем собственном сайте.

Если вы хотите, чтобы ваш скрипт работал с сайтами, которые не под вашим контролем, лучше всего использовать прокси-сервер или хакер iframe.

0

Вы не можете сделать такой запрос в другом домене. Это функция безопасности в браузере. Возможно, вам придется попробовать что-то сделать в iframe или что-то еще и проверить это.

0

JSONP не сделает вас много ...

Что вы должны сделать, это создать локальный прокси-сервер легко на вашем сервере, используя ваш любимый язык, который будет просто загрузить URL-адрес, который вы передаете его и вернуть код ответа. Затем используйте jquery ajax для загрузки страницы прокси с URL-адресом, который вы хотите проверить.

+0

У меня нет возможности локального прокси-сервера, к сожалению (у меня есть только определенные параметры настройки, доступные на сервере - некоторые пользовательские места HTML, и я могу загрузить JavaScript). –