javascript - jquery(a)同步请求等待

标签 javascript jquery ajax backbone.js

我对 javascript 很陌生,我遇到了 jquery 和 AJAX 请求的第一个问题。我在页面上有很多切换按钮,当我单击它们时,我必须要求 REST 服务来查询是否可以。如果可以的话,我会显示一个警告框,其中包含“你确定吗”blablabla,如果不能,则会显示一个警告框,表明用户不能。

这是主要问题,如果我使用 async:false 它可以工作,但据我所知,这不是一个好的做法(chrome 记得我不是),那么最好的方法是什么?

我正在使用主干,我不想为每个切换设置一个方法来处理点击,并设置第二个方法来处理回调。

这样做的好方法是什么?

startService: function(serviceName){
        var confirm = true;

        var $paid = this.model.getPaidTo(serviceName);
        console.log(this.model.getPaidTo(serviceName));
        //Here the consol.log is always undefined if I use async: true

        if ($paid == 'false'){
            confirm = confirm("Are you sure to start" + this.model.services[serviceName].price + ". Continue ?");
        }

        if(confirm){
            console.log("start " + serviceName + " service")
            return true;
        }
        return false;
    },

型号:

getPaidTo: function(serviceName){
        var self = this;
        var Url = require.apiUrl + "profile/girl/" + this.loginModel.id + "/checkservice/" + serviceName;

        $.ajax({
            type: "GET",
            url: Url,
            data: {},
            success: function(data){
                return data.data.service;
            },
            error: function(data){
                self.error = 'error';
                return 'error';
            }
        });
    }

致以诚挚的问候

最佳答案

谢谢斯拉克斯,

它工作得很好。这是我修改的方法:

startService: function(serviceName){
        var self = this;
        var confirm = true;

        //var $paid = this.model.getPaidTo(serviceName);
        this.model.getPaidTo(serviceName).done(function(data){
            $paid = data.data.service;

            if ($paid == 'false'){
                confirm = window.confirm("Are you sure to start" + self.model.services[serviceName].price + ". Continue ?");
            }

            if(confirm){
                console.log("start " + serviceName + " service");
            }

        }).fail(function(){
            alert('error');
        });
    },

型号:

getPaidTo: function(serviceName){
        var Url = require.apiUrl + "profile/girl/" + this.loginModel.id + "/checkservice/" + serviceName;

        return $.ajax({
            type: "GET",
            url: Url
        });
    }

希望对其他人有帮助。

致以诚挚的问候

关于javascript - jquery(a)同步请求等待,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35274245/

相关文章:

Javascript:如何更改点击事件上的 TextGeometry?

javascript - 使用 uniqid 生成两次唯一 ID

javascript - 如果存在子菜单,如何将跨度 append 到 <li>

javascript - css @media query + 当屏幕小于特定宽度时显示/隐藏 div 的 jQuery 按钮 + 当屏幕变大时自动恢复它

javascript - 无法在javascript中调用同步功能

javascript - 使用 XMLHttpRequest 的 Flickr API 调用不起作用

javascript - 顶点图表将点击事件添加到标签

javascript - 在 HTML5 Canvas 上迭代时获取 X 和 Y 像素坐标 getImageData

c# - 当我通过 jquery 发布时服务器验证不起作用

javascript - facebook graph api ajax XMLHttpRequest - 空结果?