ユーザーがYouTubeリンクを含むフォームに入力できるアプリがあります。多くの場合、ビデオ リンクは無効であり、手動で修正する必要があります。ユーザーがフォームを送信できるようにする前に、URL を検証したいと考えています。
私はfirebugコンソールにいくつかのコードを書いています:
function test() {
// var x1 = "http://gdata.youtube.com/feeds/api/videos/OvcaXrWFM2Q";
var x1 = "http://gdata.youtube.com/feeds/api/videos/VIDEO_ID?alt";
var asd = false;
$.ajax({
dataType: 'jsonp',
async: false,
url: x1,
/* success: function(data) {
console.log("success --> ", data.length);
return true;
},
error: function(error) {
console.log("error --> ", error);
},
*/ complete: function(e){
console.log("complete --> ", e);
return true;
}
});
// return false ;
return asd;
}
var y = test();
if (y) {
console.log("success y --> " + y);
} else {
console.log("error y --> " + y);
}
無効な 400 リクエスト:
>>> function test() { // var x1 = "http://gdata.y...} else { console.log("error y --> " + y); }
error y --> false
"NetworkError: 400 Bad Request - http://gdata.youtube.com/feeds/api/videos/VIDEO_ID?alt&callback=jsonp1375741532312&_=1375800027900"
有効な応答:
>>> function test() { var x1 = "http://gdata.you...} else { console.log("error y --> " + y); }
error y --> false
success --> 4516
jquery....min.js (line 29)
complete --> undefined
jquery....min.js (line 29)
その400をキャッチするにはどうすればよいですか?また、コードは "console.log("success y --> " + y);" になるようです。成功する前に: function()。
編集:
私の他のオプションは、Java を使用してこの検証をバックエンドに送信することですが、js を使用することをお勧めします。
public static void main(String[] args) throws ParseException {
String[] urls = new String[2];
urls[0] = "http://gdata.youtube.com/feeds/api/videos/OvcaXrWFM2Q";
urls[1] = "http://gdata.youtube.com/feeds/api/videos/23487978923789423789342sufyu";
HttpURLConnection con;
HttpURLConnection.setFollowRedirects(false);
for (String url : urls) {
try {
con = (HttpURLConnection) new URL(url).openConnection();
con.setRequestMethod("HEAD");
System.out.println(con.getResponseCode());
} catch (IOException e) {
System.out.println(e);
}
}
}
有効なビデオ ID の場合は 200、無効なビデオ ID の場合は 400 です。