我有应用程序,允许用户填写包含youtube链接的表单。很多时候,视频链接无效,我必须手动修复它。我想在允许用户提交表单之前验证网址。
我在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(”成功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);
}
}
}
输出我按预期得到,200表示有效视频ID,400表示无效视频ID。
答案 0 :(得分: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);
}
}
}