2015-10-08 130 views
0

好了,所以我有三個<select>場一字排開也始終無法運行水平是這樣的:JavaScript函數後,.load

---------- | teacher1 | ---- | student1 | - --- | student6 |

---------- | teacher2 |

---------- | teacher3 |

Okey,因此對於這個例子我們使用老師和學生,老師可以包含幾個學生。當您從左側列表中選擇一位教師時,所有連接到該教師的學生都會出現在中間列表中。而在右邊,我們有沒有老師的學生。如果您單擊中間字段的學生,它將從該教師中刪除並顯示在正確的字段中(連接在MYSQL DB中生成)。

的所有選擇字段內<div>,我用jQuery使用.load()函數來改變的內容,喜歡本作的刪除功能:

 $('#hold2').load("page.php?q=" + data); 

一切正常加載和數據庫的變化正確的,問題是我想在.load()函數後刷新mid和right字段,所以不需要刷新頁面來查看結果。所以我把這些功能下:

 $('#hold2').load("page.php?q=" + data); 
    refreshTable1(teacher); 
    refreshStudent(); 

這裏是refreshTable1:

 function refreshTable1(value) { 
    teacher = value; 
    $('#holder').load("example.php?q=" + value); 

    } 

這裏是refreshStudent:

function refreshStudent() { 
    $('#table').load("examplepalge.php?p=blabla", function(){ 
      setTimeout(refreshTable1(etc), 2000); 
    }); 

    } 

有時刷新兩個中間和右側直接還田,有時無,有時只是其中之一。我怎樣才能讓這個運行流暢,這樣的領域肯定會正確刷新之後:$('#hold2').load("page.php?q=" + data);

請注意:並非所有的連接和功能的鏈接都是正確的,我只是改變了一些東西,在這個例子中。但是我們已經知道這些功能是有效的,有時它們正確加載,有時不加載。

+1

調用是異步的,並且您正在嘗試在調用期間更新表。嘗試使用回調,而不是..爲了上帝的緣故,避免在不需要時使用settimeouts –

+0

'refreshTable1'需要一個參數。當你從'setTimeout'調用它時,你沒有傳遞參數。 – Barmar

+0

@barmar對不起,在我的示例中,它已經在「真實」文檔中工作。 – jdoe

回答

1

你需要用回調來設置它,所以你只有在第一個函數完成後才執行第二個函數。