2013-09-05 39 views
0

我是新來的AJAX和已經問了一些問題兒子這個問題,但我有另一個,我使用AJAX調用自動保存從下拉列表中的值到數據庫,這個作品偉大的,但每次我改變一個值(他們是多個下拉有幾個值,每個可以容納)我希望div更新以反映價值的變化。阿賈克斯我有如下:AJAX調用重新加載只能工作一次

<script> 
    $(document).ready(function(){ 
    $('select').on('change',function() { 
      var statusVal = $(this).val(); 
      var job_id = $(this).prop('id'); 
      $.ajax({ 
        type: "POST", 
        url: "saveStatus.php", 
        data: { statusType : statusVal, jobID: job_id }, 
      success: function(data) { 
       $('#div1').load('jobs.php #div1', function() {}); 

        } 
     }) 
    }); 
    }); 
</script> 

所以,當我在一個下降更改值下拉框(在DIV1),它refreshs的價值,但如果我是在相同或不同的操作來更改另一個值下降它不再刷新div或將值保存到我的數據庫,沒有在我的AJAX重新加載位我可以更改多個字段中的值,它可以節省,但與重新加載部分它只發生一次

--- --EDIT -----

好,還有人提問,我用過

$('#div1').on('change', 'select', function() {            
     var statusVal = $(this).val(); 
      var job_id = $(this).prop('id'); 
      $.ajax({ 
        type: "POST", 
        url: "saveStatus.php", 
        data: { statusType : statusVal, jobID: job_id }, 

        success: function(data) { 
         $('#div1').load('jobs.php #div1', function() {}); 
        } 
     }) 
    }); 
    }); 

即使對於多個選擇更改,它也可以很好地工作。但是,如果我在幾個div中選擇幾個選項,EG div1,div2和div3。我該如何調整這段代碼,以便能夠刷新所有div上的所有div,或者是讓代碼每次都適應3次div。

----- -----編輯 三江源一切,我能夠與

$('#div1, #div2').on('change', 'select', function() { //stuff 

伊恩

+0

'success'處理程序中'load'調用的目的是什麼? – tymeJV

+0

在我正在學習的教程上它有這一行來刷新div,我是AJAX的超級新手,並且不知道什麼是加載。 – snookian

+0

'load'是另一個AJAX調用。因此,在您最初的AJAX調用之後,您會在完成後創建另一個,返回到'jobs.php',這是正確的嗎? – tymeJV

回答

2

你的聽者一定會選擇元素,要做到這一點,其我打賭正在被吹走並與負荷()相關。檢查出event delegation。 jQuery使它變得容易。嘗試在'#div1'上綁定監聽器

$('#div1').on('change', 'select', function(e) { //stuff 

然後,它應該也適用於刷新的內容。

+0

嗨,我編輯了上面的問題,包括一些代碼,使用你給的例子,但現在我想能夠刷新多個div如果任何一個選擇更改,我會能夠做到這一點,或者我應該重複每個代碼 – snookian

+0

這段代碼將監聽#div1中的每個選擇。您可以將偵聽器附加到文檔中,或者創建一個包含所有其他div的div,如果您需要全部偵聽它們。如果您想在_any_選擇更改時刷新_every_ div,只需讓您的回調刷新全部。如果要刷新的div與更改的select元素相關,則可以訪問回調(event.target)中的觸發元素並確定適當的div。另外,正如其他評論者所提到的,可能有更好的方法來刷新比.load()。 – Tarnation