2011-04-21 81 views
0

有沒有辦法檢查表單是否使用if語句提交?使用條件檢查表單提交?

我想寫一個函數,不管用戶做什麼,信息總是會被接收並顯示給他們。但是,如果用戶提交表單,它會將該數據發送到數據庫並首先進行更新。

我一直在試圖找到事件或方法來幫助我,但似乎找不到任何有用的東西。

功能的getData(){

if (FORM SUBMITTED) { 
    //POST and send 
    request.open("POST", url, true); 
    request.onreadystatechange = useResponse; 
    request.send(str); 
} 

//GET and display 
request.open("GET", url, true); 
request.onreadystatechange = useResponse; 
request.send(null); 

}

編輯:我不刷新頁面。我忘了提及我正在使用AJAX進行此操作。當頁面加載時,該功能最初運行(顯示錶單數據)。但我不希望表單發送任何數據,因爲我只是加載頁面而沒有提交任何內容。

頁面加載後,我點擊提交,這個函數被調用。我需要的是AJAX通過POST發送表單數據,然後重新顯示它(上面的腳本概述了該功能)。

剛剛提交表單時調用函數: action="javascript:getData()"

回答

1

我不太明白你問什麼,因爲如果一個表單提交,然後在瀏覽器加載一個新的HTTP響應可能會或可能不會了解導致其生成的HTML表單的任何信息。

[編輯]

它看起來像「的getData」功能做了太多的事情,我會創建單獨的函數來處理「get」和「後」的要求,例如:

<body> 
    <form name="form" action="#">...</form> 
    <script type="text/javascript"> 
    var getData = function() { 
     // XHR GET data and update DOM... 
    }; 
    getData(); 
    var sendData = function() { 
     // XHR POST form encoded data from form input elements... 
    }; 
    document.form.onsubmit = function() { 
     sendData(); 
     getData(); 
     return false; // Block the actual form submit event. 
    }; 
    </script> 
</body> 

jQuery serialize() function演示了以編程方式對錶單數據進行編碼所需的內容。

+0

我不刷新頁面,而是使用action =「javascript:getData()」來運行該函數。我使用AJAX發送表單數據而不刷新頁面。看到我上面的編輯。 – Dasaru 2011-04-21 09:58:52

+0

哦,好的!咄!這完全有道理。我不知道爲什麼我試圖將它全部強制爲一個功能。所以,我猜猜,無法檢查表單是否在if語句內提交? – Dasaru 2011-04-22 22:35:34

+0

@Dasaru:就我所知,知道表單是否被提交的唯一方法是當它的「submit」事件觸發時,這意味着它的「onsubmit」處理程序正在執行。 – maerics 2011-04-23 00:43:40

0

嗯,我希望我能正確理解你。你基本上想要(有條件地)POST一個URL並從另一個(或同一個)GET串行?

如果是這樣的話,你的代碼看起來是這樣的......

var get = function(callback) { 
    var req = new XMLHttpRequest(); 
    req.open = req.open('GET', url); 
    req.onreadystatechange = function() { 
    if (...) { 
     callback(req.responseText); 
    } 
    }; 
    req.send(); 
}; 

var exec = function(callback) { 
    if (FORM_SUBMITTED) { 
    var req = new XMLHttpRequest(); 
    req.open('POST', url); 
    req.onreadystatechange = function() { 
     if (...) { 
     get(callback); 
     } 
    }; 
    req.send(); 
    } else { 
    get(callback); 
    } 
}; 

exec(function(data) { 
    console.log('request(s) complete, here's the response: '+data); 
}); 

由於XHR異步使用時,它是唯一真正值得-同時,你必須巢一些回調,以確保一切發生在串行,否則,GET可能會在POST之前完成。

+0

我在編程方面相當新,所以我不確定你在做什麼。 – Dasaru 2011-04-21 09:56:56