AJAX 调用只工作一次
AJAX calls only working once
这是我的代码:
<script type="text/javascript">
$(document).ready(function() {
$('#username').change(check_username);
});
function check_username() {
$("#check_username").html('<img src="images/site/ajax-loader.gif" />username avilable??').delay(5000);
var usernametotest = $('#username').val();
$.post("backend/username_available.php", { username: usernametotest})
.done(function(data) {
$("#check_username").replaceWith(data);
});
}
</script>
我使用此代码与 AJACX 一起检查我的表单中用户名的可用性。它工作完美,但只有一次。当用户名被占用并且我更改用户名时,在第一个之后没有执行 AJAX 检查?文本"用户名已存在"(在变量数据中)不会替换为"用户名确定"。
此 JavaScript 是在 </html>
标记之前添加的。
您的代码看起来不错 - 请参阅此 jsfiddle ,其中包含有关 usernametotest
值的警报以提高可见性
$(document).ready(function() {
$('#username').change(check_username);
});
function check_username(){
$("#check_username").html('username avilable??').delay(5000);
var usernametotest = $('#username').val();
alert('posting username ' + usernametotest);
$.post("backend/username_available.php", { username: usernametotest} )
.done(function(data) {
$("#check_username").replaceWith( data );
});
}
每次都会使用正确的有效负载发出发布请求,因此没有问题(检查浏览器开发人员工具,例如 Chrome 中的网络选项卡/XHR)
一定是从backend/username_available.php
返回的响应有问题吗?检查第一个请求与其余请求的响应,差异和问题可能会跳出来。
每当您替换元素时...在这里,你就是这样做的...
$("#check_username").replaceWith( data );
所有这些元素的处理程序都将丢失。所以change()
不再有效。为了能够再次使用它,您只需要在重写元素后再次绑定它:
$('#username').change(check_username);
或者将处理程序绑定到父处理程序并委托它:
$('#username').parent().on('click', '#username', check_username);
(我觉得类选择器会更好 - 称之为迷信)
你可以试试这个:
$('#username').on('change', function() {
// write your code here
});
相关文章:
- 如何用JavaScriptEasy的方式一次调用大量restful服务
- 有没有一种方法可以在一次调用中修改每个jquery对象的特定属性
- 如何在一次调用中使用jquery从外部文件中获取多个剑道ui模板
- JS - 正则表达式替换在一次调用中发生多次,如何让它运行一次
- 进度条函数在一次调用后中断
- 如何使用上一次调用的数据进行第二次 JS .post 调用
- 如何通过一次调用 Facebook Graph API 来获取多个相册图片 URL
- 创建不会中断上一次调用的重复动画
- 如何只需一次调用就可以将对象数组保存到mongoose DB中
- 为什么函数只运行一次?在上一次调用完成后,尝试使用计数器函数多次运行函数
- 如何在android中一次调用多个java脚本函数来加载webview
- 下划线throttle+确保最后一次调用
- 如何重复调用一个函数并等待下一次调用之前完成
- 如何从函数的最后一次调用中判断它是同步调用还是异步调用?
- 我有这三个函数,该怎么做呢在onload时一个接一个地调用它们在refresh时一次调用一个函数
- 函数只适用于最后一次调用
- 一次调用两个函数
- 在Symfony 2上使用Assetic组合文件,只对所有CSS文件进行一次调用
- 烬:每5秒轮询一次api,但要在获得前一次调用的响应之后
- 一次调用多个ajax函数,PHP, ajax