0

ユーザーが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 です。

4

1 に答える 1

0

応答ステータス コードを取得するには、チェックをバックエンド Java に移動する必要がありました。Javascriptはそれを行うことができませんでした。

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);
            }
        }
    }
于 2013-08-20T15:24:01.580 に答える