jQuery を使用するクライアント側で、リンク URL が有効かどうか (つまり、404 を返さないかどうか) を確認できるかどうかを知りたいです。このリンクは別のドメインを指しているため、$.get() を使用しただけでは、パーミッションの問題が発生します。JSONP リクエストの使用について読んだことは覚えていますが、覚えていません。
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」にあると想定します。
JSONPは、呼び出しているサーバーがJSONP形式の応答を返すことができる場合に機能します。これは基本的に、ロードされた後にページでコールバック関数を呼び出すスクリプトを意味します。http://en.wikipedia.org/wiki/JSON#JSONPを参照してください
あなたの場合、他のサイトが協力する意思があるか、あなたがあなた自身のサイトにプロキシスクリプトを持っていない限り、それは機能しません。
スクリプトを自分の管理下にないサイトで機能させたい場合は、プロキシまたはiframeハックを使用するのが最善の策です。
そのようなリクエストを別のドメインに行うことはできません。これはブラウザのセキュリティ機能です。iframeなどで何かをして、それを確認する必要があるかもしれません。
jsonpはあなたに多くのことをしません...
あなたがすべきことは、好きな言語を使用してサーバー上にローカル プロキシを簡単に作成することです。このプロキシは、渡した URL をロードして応答コードを返すだけです。次に、jquery ajax を使用して、テストする URL を含むプロキシ ページを読み込みます。