JQuery ajax忽略了url

时间:2012-09-27 10:06:30

标签: javascript jquery ajax

我有功能 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(){
                               ///...
                            });
            }   
        });

3 个答案:

答案 0 :(得分:1)

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

没有tiketresult变量。

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

答案 1 :(得分:1)

也许是因为tiket错字? :P

AJAX调用也是异步的(这就是第一个A的用途),所以你在成功函数中得到了结果并在那里做了一些事情。

所以在click函数中调用tryGetTicket就像你现在一样,但是将所有///...内容移到tryGetTicket的success函数中,或者创建一个新函数并从该成功函数中调用它。

答案 2 :(得分:0)

试试这个

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

现在在url路径中添加此变量,例如

url: Path+loginUrl,