我有一个用于搜索数字的脚本的ajax调用。响应是一个带名字和姓氏(字符串)的json数组。客户端脚本是这样的,我认为真的不知道为什么脚本循环并多次发送响应。 toogle解决方案是我尝试的最后一件事。
$(document).ready(function () {
$("#phone").keyup(function () {
var number = $(this).val();
var toogle = 0;
if (number.length == 10 && toogle == 0) {
alert('inside with 10 numbers');
toogle = 1;
$.ajax({
type: "POST",
url: "info-phone.php",
dataType: "jsonp",
data: {
number: number
}
}).done(function (msg) {
toogle = 0;
if (msg.Name != "" && msg.Surname != "") {
$("#phone").add("Are you " + msg.Name + " " + msg.Surname);
};
}); //done-function
}
}); //phone-keyup
}); //document-ready
基本上我有一个输入,当用户达到10个数字时,这个脚本将调用服务器并获得该数字的名称。
有什么想法吗?只是一个错字?
答案 0 :(得分:1)
试试这个:
$(document).ready(function () {
window.toogle = 0;
$("#phone").click(function () {
var number = $(this).val();
if (number.length == 10 && window.toogle == 0) {
alert('inside with 10 numbers');
window.toogle = 1;
$.ajax({
type: "POST",
url: "info-phone.php",
dataType: "jsonp",
data: {
number: number
}
}).done(function (msg) {
window.toogle = 0;
if (msg.Name != "" && msg.Surname != "") {
$("#phone").add("Are you " + msg.Name + " " + msg.Surname);
}
}); //done-function
}
}); //phone-keyup
}); //document-ready
答案 1 :(得分:0)
我认为你的问题是你正在使用.length来测量字符串的长度,返回jQuery .val()方法,返回字符串或“数字”。由于您的输入是电话号码,我认为.val()方法返回一个整数,您需要将其转换为.length的字符串才能正常工作。
尝试
number.toString().length;
答案 2 :(得分:-1)
首先,您不应该使用多个标识编写匿名函数。 只需命名你的功能,就可以看清楚那个烂摊子!
您的变量number和toogle是您调用keyup的匿名函数的本地函数。 我想这里可能有问题吗?
像这样:
$(document).ready(function () {
window.toogle = 0;
$("#phone").click(phoneKeyUp); //phone-keyup -> this one you declare it to make document.ready() clearer
}); //document-ready
var phoneKeyUp = function() {
var number = $(this).val();
if (number.length == 10 && window.toogle == 0) {
alert('inside with 10 numbers');
window.toogle = 1;
$.ajax({
type: "POST",
url: "info-phone.php",
dataType: "jsonp",
data: {
number: number
}
}).done(function (msg) {
window.toogle = 0;
if (msg.Name != "" && msg.Surname != "") {
$("#phone").add("Are you " + msg.Name + " " + msg.Surname);
}
}); //done-function -> this one may stay here
}
};