我有功能 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(){
///...
});
}
});
答案 0 :(得分:1)
您的tryGetTicket
几乎总是会返回null
,因为$.ajax
调用是异步的。
没有tiket
和result
变量。
您如何检查实际调用的是哪个URL?
答案 1 :(得分:1)
也许是因为tiket
错字? :P
AJAX调用也是异步的(这就是第一个A的用途),所以你在成功函数中得到了结果并在那里做了一些事情。
所以在click函数中调用tryGetTicket就像你现在一样,但是将所有///...
内容移到tryGetTicket的success函数中,或者创建一个新函数并从该成功函数中调用它。
答案 2 :(得分:0)
试试这个
var Path = "http://example.com";
现在在url路径中添加此变量,例如
url: Path+loginUrl,