首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多次调用Ajax回调

多次调用Ajax回调
EN

Stack Overflow用户
提问于 2014-06-19 13:43:53
回答 3查看 84关注 0票数 1

我有一个ajax调用脚本来搜索数字。响应是一个具有名称和姓氏(Strings)的json数组。客户机-脚本就是这样的,我想我真的不明白为什么这个脚本要多次循环和发送响应。这是我最后一次尝试。

代码语言:javascript
复制
$(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个数字时,这个脚本将调用服务器并获取该号码的名称。

有什么想法吗?只是打错了?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-06-19 13:59:27

试试这个:

代码语言:javascript
复制
$(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
EN

Stack Overflow用户

发布于 2014-06-19 13:58:36

我认为您的问题是,在返回返回字符串或“数字”的jQuery .val()方法时,您使用的是度量字符串长度的jQuery。由于您的输入是电话号码,我认为.val()方法正在返回一个整数,您需要将它转换为一个字符串,以使.length正确工作。

试一试

代码语言:javascript
复制
number.toString().length;
票数 0
EN

Stack Overflow用户

发布于 2014-06-19 13:51:52

首先,您不应该编写带有多个标识的匿名函数。只要说出你的功能,看得更清楚,在混乱中!

您的变量号和toogle是您调用的匿名函数的本地密钥。我想这里可能有问题,不是吗?

如下所示:

代码语言:javascript
复制
$(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
    }
};
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24308114

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档