您的位置:首页 > 其它

ajax判断url是否连通

2013-10-07 09:51 176 查看
昨天遇到了一个判断一个url请求是否是可连通的问题,无法避免的遇到了ajax跨域请求的问题,之后网上查了找到貌似可以行的2个办法,一个使用<script>标签去动态的设置其src属性,<script>不存在跨域问题,试了一遍,没试出来...然后使用第二种方法,调用中间层去判断url是否连通,即ajax不直接去调用url,而是调用一个自己写的中间servlet,把url当做参数传进去,用java判断是否url可用,再返回给页面,代码如下:

循环列表,调用方法ping(id,url);

<%
int i = 1;
for (Object o : list) {
String[] o1 = ((String) o).split("#");
%>
<tr class="row<%=i % 2 == 0 ? 1 : 2%>">
<td width="5%"><%=i%></td>
<td><%=o1[0]%></td>
<td id="<%=i%>"><img src="/GMC/img/loading.gif" /></td>
<script type="text/javascript">
ping(<%=i%>,"<%=o1[1]%>");
</script>
</tr>
<%
i++;
}
%>
方法ping(id,url)负责用ajax调用中间层判断url是否可用;

<script type="text/javascript">
function ping(id,url){
$.post(
"interfaceMonitoringAjax.jsp",
{
'url':url
},
function(data){
if($.trim(data)=="success"){
$("#"+id).html("<img src='/GMC/img/operate/success.jpg'/>");
}else if($.trim(data)=="error"){
$("#"+id).html("<img src='/GMC/img/operate/delete.png'/>");
}
}
);
}
</script>


servlet如下,为了节省servlet配置步骤直接调用了jsp,jsp返回是否成功的标识,url做了处理,如果不带http://开头的加上http://addr:port开头:

<%@page import="java.net.HttpURLConnection"%>
<%@page import="java.net.URL"%>
<%
URL urlStr;
HttpURLConnection connection;
int state = -1;

String url = request.getParameter("url");
if(url.indexOf("http://")<0){
if(url.indexOf("/")!=0){
url = "http://" + request.getRemoteAddr() +":" + request.getServerPort() + "/" + url;
}else{
url = "http://" + request.getRemoteAddr() +":" + request.getServerPort() + url;
}
}
String succ = "error";
int counts = 0;
if (url == null || url.length() <= 0) {
succ = "error";
}
//连接3次3次不成功判断失败
while (counts < 3) {
try {
urlStr = new URL(url);
connection = (HttpURLConnection) urlStr.openConnection();
state = connection.getResponseCode();
if (state == 200) {
succ = "success";
}
break;
} catch (Exception ex) {
counts++;
continue;
}
}
out.print(succ);
%>


魔狱典狱长 » ajax判断url是否连通
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: