0

我的应用程序允许用户填写包含 youtube 链接的表单。很多时候,视频链接无效,我必须手动修复它。我想在允许用户提交表单之前验证 url。

我在萤火虫控制台上写了一些代码:

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);" 在它取得成功之前:函数()。

编辑:

我的另一个选择是使用 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.util. 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 回答