我有一些代碼,我定義一個變量是一個特定的值,但是,然後,在ajax請求期間,該值必須改變。當我提醒檢查該值已更改時,該變量仍具有舊值。所討論的變量是'行動'。請看看:jQuery變量作用域 - 變量不會改變其值
$(function(){
var $action; //this one is the problem
var $mod;
$(".main-nav li > a").click(function(){
$(this).parent().siblings().find(".inner-nav").hide();
$(this).parent().siblings().children("a").attr("id","");
if ($(this).attr('id')=='nav-active')
{
$(this).attr('id','');
}
else
{
$(this).attr('id','nav-active');
}
$(this).parent().find(".inner-nav").toggle();
});
$(".main-nav li .inner-nav li a").click(function(){
$(this).parent().siblings().find("a").attr("id","");
$(".main-nav .inner-nav li a").attr("id","");
$(this).attr('id','nav-active');
// ajax
var rel = $(this).attr("rel");
var rel_arr = rel.split(',');
$action = rel_arr[0]; //first change of value
$mod = rel_arr[1];
$.ajax({
url: 'ajaxLoad.php?action='+$action+'&mod='+$mod,
method: 'GET',
success: function(response) {
$(".content div").html("");
$action = response.ajax.action; //second change of value
$mod = response.ajax.mod;
$.each(response.data, function(id, product){
$(".content > div").append("<div>"+product.name+"</div>");
});
}
});
alert ($action); //prints out the first value
// Set document title
var parentClass = $(this).parent().parent().parent().find("a").html();
document.title = parentClass + " :: " + $(this).html();
});
});
如果你這樣做,Chrome瀏覽器會告訴你,「在主線程同步的XMLHttpRequest是因爲其所帶來的影響最終用戶的體驗棄用更多幫助。 ,請查看http://xhr.spec.whatwg.org/。「它可能工作,但這是一個壞主意。你應該找到一種方法來用'async:true'完成工作,在成功回調中你需要做什麼。 – Chad