2014-01-30 17 views
5

我有一個 $( 「clickButton」)。點擊(函數()加載使用$就一頁,並將結果返回到一個DIV,這在Chrome,Firefox和Safari,但不IE11完美的作品。

$.ajax({ 
    url: "go.php?ab=1", 
     success: function(data, textStatus, xhr) { 
     $("#res").html(data);  
    } 
}); 

作爲一個快速測試,我嘗試了以下內容和它再次在Chrome,Firefox和Safari但不IE11工作。

$.get('go.php?ab=1', function(jqXHR, textStatus, errorThrown) 
{ alert(jqXHR); }); 

的返回的日期是文本和是確定錯誤。 go.php正在運行多個命令行腳本,並取決於通過什麼傳遞的變量在運行什麼。

所有這一切都很好,它在3個瀏覽器中運行得非常好,但不是IE11。

當頁面第一次在IE中加載它的工作,它似乎運行轉到腳本並返回結果。但是不會調用任何後續的點擊返回瞬間和go.php頁面。結果顯示,但它們似乎是第一個過程返回結果。就好像結果和過程已被緩存。

任何想法如何使它在IE中的工作,因爲它在其他人呢?

+0

創建一個小提琴 – haim770

+1

禁用所有請求'url:「go.php?ab = 1」,'你錯過了添加''',可能是排字錯誤 –

+0

感謝這裏有一個錯字,正如我說的那樣,IE 11中的所有東西都能正常工作。 – JeffVader

回答

3

這是因爲如果該結果和過程已經被緩存的價值。

這是可能的。如果您發送多個GET請求到相同的URL,您的瀏覽器可能會緩存結果。如果你想驗證這一點,你可以點擊按鈕,清除緩存而不重新加載頁面,然後再次點擊按鈕,看看它是否按預期工作。

爲了防止GET請求的高速緩存可以添加

cache: false 

到$阿賈克斯選項爲每個請求,或者您可以通過使用

$.ajaxSetup({ cache: false }); 
+0

沒有幫助。 – JeffVader

+0

你可以發佈你的更新代碼嗎?我能夠重現您的情況,它在Firefox中的工作位置,但在Internet Explorer 11中進行初始點擊後沒有更改。但是,添加cache:false爲我解決了這個問題。此外,在此之前,我可以通過清除點擊之間的緩存來驗證緩存是否成問題。 – Avalanche

+0

嗨。目前我不在PC上。我添加了'.ajaxSetup({cache:false});'就在click函數中。我注意到的一件事是我的一個go腳本重新啓動Apache。一旦發生這種情況,其他按鈕都不會起作用,直到我重新加載頁面。再次,這只是在IE瀏覽器,其他人都能正常工作。 – JeffVader

1

我不知道我們是否遇到了同樣的問題,但剛纔我試圖從go.php中嘗試get the responce data,並將其添加到div中。

我的代碼是這樣的。

的onClick:

<script type="text/javascript"> 
    function gimmeData(){ 

        var url = 'go.php'; 
        $.ajax({ 
        type: "GET", 
        url: url, 
        data:{'something':'1'}, 
        success:function(results) 
        { 
         $('#add_data').html(results); 
        } 
        }); 
       } 
</script> 

這會給go.php?something=1網址。

HTML:

<input type="button" onclick="gimmeData();" value="clickme!" /> 
<div id="add_data"></div> 

按鈕點擊

$('a').on('click', function(){ 
    var a = $(this).data('first'); 
    var b = $(this).data('second'); 
    alert(a + ":" + b); 
}); 

HTML:

<a id="button" href="#" data-first="something" data-second="something2" onclick="click();">click me</a> 

使用data()功能。看到http://api.jquery.com/data/

,或者你可以做$(this).attr("data-value")得到的data-attribute

JSFiddle sample.

+0

作爲一個基本的測試,這工作。我想嘗試一些進一步的測試。 當前我的按鈕的值設置爲'data-value =「go.php?ab = 1」',然後我使用$(this).attr(「data-value」)'來獲取正確的url。我已經改變了這個'data-value ='{'ab':'1'}「'並將'$(this).attr(」data-value「)'添加到'data:'但是這不工作。任何方式我可以通過這些價值?你可以做的 – JeffVader

+1

是製作2個數據屬性。一個用於另一個值,另一個用於其他值並將其存儲在它們各自的變量中並使用它們.lemme更新我的答案。禁用緩存的 – rockStar