jQuery检查url是否响应
jQuery check if url responsing
首先,我读过这个问题,觉得很有用。
我正在尝试检测url是否有响应。如果是,则使用此url并启动另一个函数。如果为false,则创建一个新url并启动其他函数。
我试图实现上面提到的问题中的代码,但我发现很难将其纳入我的代码中,因为我不理解他试图用callback
提到什么。
所以我有两个功能:
function relatedProducts(relatedUrl){
$.getJSON(relatedUrl, function(data){
......
});
}
function liveSearch(liveSearchUrl){
$.getJSON(liveSearchUrl, function(data){
......
});
}
此外,我有一个变量url,我正在尝试测试该url是否响应,所以它是否有效。
var url ='apple/i-phone/iphone5';
function urlExists(url, exists){
$.ajax({
type: 'HEAD',
url: url,
success: function(){
// what do I have to do here???
Poster is mentioning `callback` but which one??
},
error: function(){
// what do I have to do here???
Poster is mentioning `callback` but which one??
}
});
}
urlExists(url, function(exists){
if(true){
var relatedUrl = ??
relatedProducts(relatedUrl);
} else {
var liveSearchUrl = ??
liveSearch(liveSearchUrl);
});
我还在学习jQuery,海报和他的答案让我很困惑;)
非常感谢您的帮助。
简单示例:
doSomeStuff($.ajax(...)); //doesn't work
其他示例:
var x = false;
$.ajax({
url: url,
success: function(){
x = true;
}
});
if (x) {
// probably doesn't work
}
这就是回调函数的作用:您可以告诉对AJAX方法的调用在完成后做一些事情。这些是示例中的success
和error
参数。
现在来看你的具体例子。我知道你从一个类似问题的答案中复制了大部分内容,但我发现它有几个问题,其中包括你对if (true)
的使用,这不是你想要的,所以下面是我改进该代码的方法:
首先,我们需要两个回调,而不是一个,不需要强制一个方法执行两个不同方法显然要处理的操作。
var successCallback = function() {
var relatedUrl = '' // see note below code block
relatedProducts(relatedUrl);
}
var errorCallback = function() {
var liveSearchUrl = ''// see note below code block
liveSearch(liveSearchUrl);
}
接下来,让我们更改您的urlExists
function urlExists(url, sCallb, eCallb){
$.ajax({
type: 'HEAD',
url: url,
success: sCallb,
error: eCallb
});
}
最后,这就是你将这些部分组合在一起的方式:
var url ='apple/i-phone/iphone5';
urlExists(url,successCallback,errorCallback);
一些注意事项:
如果您希望relatedUrl
和liveSearchUrl
是用于ajax调用的相同URL,请告诉我,我将相应地更改示例。如果没有,只需将您想要使用的url放在引号内即可。
当然,urlExists是一个甚至不需要的包装器,你可以直接在AJAX调用中使用你的url和回调,但这样看起来更干净,更容易理解,也更可重用。
对于ANY错误,此代码将执行errorCallback
;如果没有发生错误,则执行successCallback
。这实际上可能不是你想要的,尤其是如果你认为AFAIK 3xx状态代码被认为是一个错误。为了获得更精细的控制,您可以为每个状态代码定义回调,或者只为其中的一些代码定义回调。如果您愿意,我可以更新我的示例,请告诉我。
请检查此项。和nob一样。
var callback = function (x){
if(x)
alert ("You can make real call to this url");
else
alert ("Somthing worng");
};
$.ajax({
type: 'HEAD',
url: "/echo/json",
success: function() {
callback(true);
},
error: function() {
callback(false);
}
});
http://jsfiddle.net/PK76X/152/
Callback
只是函数返回的值。
当OP状态为callback
时,在ans的解释中,他引用的是返回值的地址。
例如:在var a = '10'
中,a
是地址,10
是存储在其中的值
现在考虑一个函数b()
,它返回一些值:
function b(){
var a ='a';
return a;
}
var something = b(); // here **something** can be seen as callback of b()
现在,当OP在代码中使用单词callback
时,他指的只是一个变量。你可以用任何像test
、abc
这样的工作来替换单词callback
,它仍然会产生相同的结果。
希望这能帮助
- 如何用jQuery捕捉ajax是否得到了错误的响应类型
- 使用JSONP内容压缩web服务响应是否有效
- AngularJS web服务是否应返回响应的深层副本
- jQuery检查url是否响应
- 如何通过服务器找到用户是否开始响应?[i.e.In 编辑他们是否键入的文本]
- XMLHttpRequest 对象在收到响应后是否关闭
- 是否存在任何使用 sass/指南针进行响应式菜单的方法
- 检测 iframe 网页是否响应
- 服务工作线程是否可以响应同步 XHR 请求
- 快速 - 路由中间件 如何确定响应视图是否已呈现
- 我怎么知道$http响应是否来自缓存 - Angular
- Jquery 查找响应是否包含元素
- 如何确定 Node .js服务器响应是否已停止
- 自定义元素的响应是否与标准元素不同;尤其是关于DOM查找
- 在Appcelerator中检测响应是否为BLOB
- 在ajaxSuccess期间找出响应是否为JSON的理想方法
- Android检查服务器响应是否“是”;一个JSON
- Javascript:如何判断AJAX响应是否是JSON
- 如何检查此Json响应是否为null
- 依靠 Content-Type: text/plain 来缓解恶意 JavaScript 执行作为响应是否安全