0

loginUrlで ajax リクエストを呼び出さなければならない関数tryGetTicketがあります。しかし、この関数を呼び出すと、ULR が無視され、loginUrl なしで get要求送信されますどうしたの?

$(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

tiketタイプミスのせいかな?:P

また、AJAX 呼び出しは非同期 (最初の A の目的) であるため、success 関数で結果を取得し、そこで何かを行います。

したがって、クリック関数で今と同じように tryGetTicket を呼び出しますが、すべて///...のものを tryGetTicket の成功関数に移動するか、新しい関数を作成してその成功関数から呼び出します。

于 2012-09-27T10:12:20.960 に答える
1

Your tryGetTicket will almost always return null, because the $.ajax call is asynchronous.

There are no tiket and result variables.

How are you checking which URL is actually called?

于 2012-09-27T10:10:55.347 に答える
0

これを試してください

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

次のように、この変数をURLパスに追加します

url: Path+loginUrl,
于 2012-09-27T10:13:14.607 に答える