2011-08-22 90 views
0

我有以下jQuery Ajax代碼,看起來(除非我誤解了這個問題),如果沒有在$("#imgNum").change(function(){});中定義page變量,那麼函數後面的ajax調用將不會觸發。您可以存儲先前請求中的Ajax變量值嗎?

由於page變量是基於SET是單擊按鈕時(這火的自己的Ajax調用),我不知道是否有設置page等於其設置爲最後的價值的一種方式?除非有另外一種方法來保存這個值來調用它,並且每次執行特定功能時都刷新它?

jQuery的:

function loadData(page, value){ 
    loading_show(); 
    gallery_hide();      
    $.ajax 
    ({ 
     type: "GET", 
     url: "new_arrivals_data.php", 
     data: {page:page, imgs:value}, 
     success: function(msg) { 
      gallery_show(); 
      $("#gallery_container").ajaxComplete(function(event, request, settings) 
      { 
       gallery_show(); 
       $("#gallery_container").html(msg); 
      }); 
     }, 
     error: function(jqXHR, textStatus, errorThrown) { 
      // Tell the human that something broke. 
     }, 
     complete: function() { 
      // This is always called regardless of success or failure. 
      loading_hide(); 
     } 
    }); 
} 
loadData(1); // For first time page load default results 
$('#gallery_container .pagination li.active').live('click',function(){ 
    var page = $(this).attr('p'); 
    loadData(page); 
});   
$('#go_btn').live('click',function(){ 
    var page = parseInt($('.goto').val()); 
    var no_of_pages = parseInt($('.total').attr('a')); 
    if(page != 0 && page <= no_of_pages){ 
     loadData(page); 
    }else{ 
     alert('Enter a PAGE between 1 and '+no_of_pages); 
     $('.goto').val("").focus(); 
     return false; 
    } 
}); 

$("#imgNum").change(function(){ 
    var sel = $(this); 
    var value = sel.val(); 
//THIS IS WHERE I WANT TO DEFINE THE PAGE BASED ON IT'S MOST RECENT VALUE 
    var page = ?; 
    loadData(page, value); 
}) 
//You should store the current selected option in a cookie 
//For the sake of the example i'll set the default permanently to 12 
var imgNum_selected = 16; 

//set the initial selected option and trigger the event 
$("#imgNum [value='"+imgNum_selected+"']").prop("selected","selected").change(); 

請問這是可以通過節省每當值改變其保留在cookie中的當前值呢?如何將值存儲在cookie中,然後檢索它?

+0

問題對我來說還不清楚............. –

+0

@ K.B好吧,我會非常樂意將其清除。你不明白什麼?基本上,有三個jQuery事件可以觸發Ajax調用。最後一個需要定義'page'變量,但是因爲'page'只在點擊某個事物時才被定義,所以我不知道如何傳遞之前設置的'page'值作爲當前值爲'page'。這是否更有意義? – stefmikhail

+0

那麼要麼你將不得不使頁面變量作爲全局變量或將其保存在DOM中的某處並加載到imgnum中。 – Pehmolelu

回答

1

我呼應的PHP變量到HTML標籤的屬性中解決了這個

var page = $('#cur_page').attr('cur_page'); 

我不知道,如果這是最好的這樣做,但它的工作原理。有什麼想法嗎?

1

這聽起來像你有一些狀態,你想跨多個功能共享。分享這種狀態的一種方法是使用全局變量。

一個類似但更受控制的方式是利用詞法範圍。創建一個函數,並在該函數的主體中創建共享變量。在該體的詞彙範圍內定義的函數可以自由訪問該共享變量。詞法範圍外的任何人都不能直接觸摸變量。

例如:瞭解更多信息How to have function recall private variable between invocations

var funcs = (function() { 
    var sharedState = 0; 

    var f1 = function() { 
     sharedState++; 
    }; 

    var f2 = function() { return sharedState; }; 

    return { 'f1': f1, 'f2' : f2 }; 
}()); 

funcs.f1(); 
alert(funcs.f2()); 
funcs.f1(); 
alert(funcs.f2()); 

// sharedState = -20; // should error out, because sharedState can't be 
// accessed directly. 

在您的特定情況下,你可以這樣做:

(function() { 
    var page; 

    // ... rest of your code, but in your loadData function, assign to page. 
}()); 

見。

<b id='cur_page' cur_page='" . $cur_page . "'></b> 

然後我設置變量jQuery中,如下所示:

+0

嗯聽起來有趣。我會進一步看看這個並嘗試一下。謝謝。奇怪的是,它是否也會將變量的最新值保存在cookie中? – stefmikhail

+0

我在執行此操作時遇到問題。你的字面意思是用'(function(){var page;}());'?我只是不確定應該放置哪些示例代碼,這些示例代碼非常適合我,以及放置哪些值。 – stefmikhail

相關問題