2016-12-05 91 views
2

我在最後幾天遇到問題,所以我希望得到您的幫助。Ajax請求不會在第二次調用後更新dropdpwn菜單

我已經創建了一個jQuery腳本來更新現有的下拉菜單(根據返回的結果設置禁用或啓用)。事實是它的工作原理,但只有一次。在所有接下來的調用中,更新與這是第一次打電話。

$('#date_input').change(function(){ 
    var date = document.getElementById('date_input').value; 

    $.ajax({ 
     type: "POST", 
     url: "check_files.php", 
     data: { "date": date }, 
     cache: false, 
     async: false, 
     success: function(results) { 
      file_list = jQuery.parseJSON(results); 
      jQuery.each(file_list, function(i, val) { 
       // $("#city_input option[value='" + val + "']").remove(); 
       $("#city_input option[value='" + val + "']").attr('disabled', 'true'); 
      }); 
     } 
    }); 
    $('#date_input').datepicker('hide'); 
}); 
+0

啓用如果你得到了相同的結果,從它聽起來就像你可以在服務器上緩存多個請求返回,檢查您的服務器端代碼。你也應該刪除'async:false',因爲它是可怕的做法。如果您檢查控制檯,您甚至會看到警告,告訴您不要使用它。 –

+0

你對此有什麼期待: $('#date_input')。datepicker('hide'); – Tchopane

+0

返回的數據總是正確的,所以php(在我的情況下)工作正常。問題是jQuery不會在第一次調用後更新下拉菜單。保存第1次調用的結果。這個$(​​'#date_input')。datepicker('hide');隱藏datepicker的日曆。 – GeoDim

回答

0

加入這一行:

$("#city_input option").removeAttr('disabled'); 

jQuery.each(file_list, function(i, val) { 

去年變化復位。如果您錯過了,沒有老禁用選項將被再次

success: function(results) { 
     file_list = jQuery.parseJSON(results); 
     $("#city_input option").removeAttr('disabled'); 
     jQuery.each(file_list, function(i, val) { 
      // $("#city_input option[value='" + val + "']").remove(); 
      $("#city_input option[value='" + val + "']").attr('disabled', 'true'); 
     }); 
    } 
+0

我認爲它仍然不能解決問題。他提到'在接下來的所有調用中,更新與第一次調用時相同'。所以,重置所有選項將無濟於事。 – 31piy

+0

我認爲這是答案!謝謝!對不起@ 31piy.I沒有注意到,你說得對! – GeoDim

相關問題