2013-12-08 100 views
0

我正在使用jQuery通過post方法將數據發送到服務器。點擊html頁面內的span標籤激活該功能。發佈的數據設置了一個php會話變量,之後頁面需要重新加載。在Chrome中一切正常,但在IE9中,我必須點擊幾次才能看到效果。如果我在函數中放置了一個警報,它可以正常工作(但我不希望那個警報)。jQuery:爲什麼我必須在IE9中多次點擊?

我不是jQuery的有經驗的用戶。

這裏是jQuery的

$(document).ready(function(){ 
    $("#ciril").click(function(){ 
    $.post('myphpfile.php', { 'lang' : 'cir'}); 
    location.reload(); 
    }); 
    $("#latin").click(function(){ 
    $.post('myphpfile.php', { 'lang' : 'lat'}); 
    location.reload(); 
    }); 
    }); 

的代碼,這裏是span標籤

<span id="latin">Text1</span> 
<span id="ciril">Text2</span> 

回答

0

你不想當你使用Ajax做一個位置重新加載,因爲它那種否定首先使用Ajax的一點。

如果您堅持無論如何做它,你需要在回調

$(function(){ 
    $("#ciril").on("click",function(){ 
    $.post('myphpfile.php', { 'lang' : 'cir'}, function() { 
    location.reload(); 
    }); 
    $("#latin").on("click",function(){ 
    $.post('myphpfile.php', { 'lang' : 'lat'}, function() { 
    location.reload(); 
    }); 
}); 

重裝如果您正在加載的頁面是一樣的頁面,你都在,只需提交一個表單,並在服務器返回你

這頁是一個更合適的方法

<span class="lang" id="lat">Text1</span> 
<span class="lang" id="cir">Text2</span> 

使用

$(function(){ 
    $(".lang").on("click",function(){ 
    $.post('myphpfile.php', { 'lang' : this.id }, function() { 
    location.reload(); 
    }); 
}); 
+0

太棒了!第一條建議工作正常。我理解你對重新加載的建議,但我需要根據點擊更改整個頁面內容(實際上,這是我如何將頁面從cyrilic切換到拉丁字符的方式,反之亦然)。我不知道如何在沒有重新加載頁面的情況下完成所有這些操作(並且爲每個頁面執行此操作),因爲翻譯功能在php腳本中。 – user3080857

+0

由於您必須重新加載,爲什麼不直接使用&lang = lat或&lang = cyr加載頁面,而不是浪費Ajax電話? – mplungjan

+0

再次感謝。首先,我打算將翻譯員放在客戶端,因爲我使用兩種字母(塞爾維亞語)的相同語言,翻譯功能並不複雜。所以,我相信可以將翻譯完全放在客戶端。但是,我stil沒有開發這些jquery翻譯功能,所以我使用PHP的,這是使用回發和重新加載的原因。 Chrome和Firefox中的事情都沒有問題,但在IE中是問題所在。感謝您幫助我解決問題。 – user3080857

相關問題