测试为URL有效(服务器响应=200)
Test is URL is valid (server response = 200)
我正在尝试检查用户在表单中提供的url是否有效,即服务器的响应是否为200。
我想在用户在字段中键入内容并且失去焦点时运行检查。由于同源策略,我在服务器端运行检查:
客户端代码:
// test url when input loses focus
angular.element(document).ready(function () {
$('#target_url').focusout(function() {
if ($('#target_url').hasClass('ng-dirty')){
$http.post('/test-url', { target_url: scope.newJob.target_url }).success(function(response){
if (response === 'valid url'){
console.log('valid url');
}else{
console.log('url not valid');
}
});
};
});
});
服务器端:
// url testing route
app.post('/test-url', function(req, res) {
request(req.body.target_url, function (err, response) {
if (response && response.statusCode === 200) {
res.send('valid url');
}else{
res.send('url not valid');
}
})
});
我的问题是,当我失去焦点时,响应不会打印到控制台,而是只有当我开始在另一个输入中键入一些内容时。我做错了什么?
注意:我使用的是角度1.1.5,这就是为什么我没有使用"ng焦点"
简单回答:您需要将focusout
回调封装在$scope.$apply
中。
长话短说:$.focusout
是jQuery,运行在Angular的摘要周期之外。因此Angular没有得到摘要信号的末尾来触发$http.post
。当您键入另一个字段时,一个摘要循环就完成了,最后$http.post
会启动。
建议修正:
$('#target_url').focusout(function() {
$scope.$apply(function() {
...existing code here...
});
});
相关文章:
- Nodejs服务器:加载资源失败:服务器的响应状态为404(未找到)
- post()向服务器动态生成的数据返回空响应
- 为什么我没有得到对Comet服务器流事件的实时响应
- 流星和铁路由器中的gzip和minimy服务器路由响应
- 我如何设置HTTP头“;访问控制允许起源”;用于来自thttpd web服务器的HTTP响应
- 使用javascript API响应内部服务器错误将曲目上传到SoundCloud
- 带Jquery的wep API,加载资源失败:服务器响应状态为404(未找到)
- 如何在 http 上调用 end().服务器响应对象
- 将服务器响应格式化为人类可读
- 如何使用 HTML 图像请求将数据发送到服务器,或返回数据作为响应
- 使用服务器路由响应路由器浏览器历史记录
- 尝试获取服务器响应
- 如何在 Javascript 函数中拦截 Web 服务器响应
- 如何从服务器响应中显示phonegap中的图像
- 如何使用服务器的JSON响应动态填充dust模板
- 在不轮询更改的情况下响应服务器端渲染
- 在服务器关闭连接之前,浏览器不会响应服务器发送的事件
- 聚合物:为响应服务器响应的组件编写演示和测试
- 将标记“series:”添加到响应服务器 JSON 中的 Highcharts 中
- 将标记“series:”插入到响应服务器 JSON 中的 Highcharts 中.格式错误的 JSON