0

我有函数tryGetTicket必须在我的loginUrl调用 ajax 请求。但是当我调用这个函数时,它会忽略我的 ULR 并在没有loginUrl的情况下发送 get 请求,即我希望什么请求会在http://example.com/sys/login但实际上是http://example.com发送。怎么了?

$(function(){
 var tryGetTicket =
            function (loginUrl, param)
            {
                var ticket = null;
                $.ajax({
                    url: loginUrl,
                    dataType: "json",
                    data: param,
                    success: function( response ) {
                        var result = null;
                        //do something
                        ticket = result;
                    }
                });
                return ticket;
            }       

        $("#importDialog").click (function(event) {
            event.preventDefault();
            var alfTicket = getCookie("alf_ticket");
            var ticket = tryGetTicket("/sys/login", $.param({"alf_ticket" : alfTicket}));
            ///...
            }   
        });

答: 它工作正常。感谢您的建议。

 $(function(){
 var tryGetTicket =
            function (loginUrl, param, callback)
            {
                var ticket = null;
                $.ajax({
                    url: loginUrl,
                    dataType: "json",
                    data: param,
                    success: function( response ) {
                        var result = null;
                        //do something
                        ticket = result;
                        callback(ticket);
                    }
                });
            }       

        $("#importDialog").click (function(event) {
            event.preventDefault();
            var alfTicket = getCookie("alf_ticket");
            var ticket = 
               tryGetTicket("/sys/login", 
                            $.param({"alf_ticket" : alfTicket}), 
                            function(){
                               ///...
                            });
            }   
        });
4

3 回答 3

1

tryGetTicket几乎总是会返回null,因为$.ajax调用是异步的。

没有tiketresult变量。

您如何检查实际调用了哪个 URL?

于 2012-09-27T10:10:55.347 回答
1

可能是因为tiket笔误?:P

AJAX 调用也是异步的(这就是第一个 A 的用途),因此您可以在成功函数中获得结果并在那里对其进行处理。

因此,在单击函数中调用 tryGetTicket 就像您现在所做的那样,但是将所有这些内容移到///...tryGetTicket 的成功函数中,或者创建一个新函数并从该成功函数中调用它。

于 2012-09-27T10:12:20.960 回答
0

试试这个

var Path =  "http://example.com";

现在在 url 路径中添加这个变量,比如

url: Path+loginUrl,
于 2012-09-27T10:13:14.607 回答