2015-10-13 52 views
0

我真的很想知道是否有更短的替代方案來編寫此代碼。我試圖將它縮短爲2或1個功能,並取得了慘敗。我正在尋求建設性的反饋!我可以縮短這個腳本嗎? (更新數據庫表和刷新)

<script type="text/javascript" src="jquery.min.js"></script> 
<script type="text/javascript"> 
function f_solar_1() { 
    $.get("f_solar_1.php"); 
    return false; 
} 
</script> 

<script type="text/javascript"> 
function refresh(){ 
location.reload(true);} 
</script> 

<script type="text/javascript"> 
function both(){ 
    f_solar_1() 
    setTimeout(refresh, 5); 
    } 
</script> 

<a href="#" onclick="both();">Activate</a> 

詳情:

此代碼是從我的PHP頁面的摘錄,從我的mysql數據庫顯示錶(我使用WAMP)。

底部的「激活」文本應該更新該表上的變量,並通過f_solar_1.php文件進行更新。

問題是反映數據庫的表不會自動反映這種變化。

所以我做了一個「reload()」函數來刷新頁面,而「both()」函數在更新數據庫之後定時刷新。

我已經知道基本的HTML有一段時間了,但是我今天早上對mysql,ajax和php是新手,這是我試圖潛入它的嘗試。

我的代碼工作正常,它只是困擾我不知道如果我可以在一個函數內完成相同的事情。

預先感謝您!

更新:Thankyou到Dat Pham爲我指出了正確的方向!

<script type="text/javascript"> 
function newfunc(){ 
$.get("f_solar_1.php", function(data) { 
location.reload(true); 
});} 
</script> 

<span onclick="newfunc();">newfunc</span> 

該代碼全部在一個函數(以及...),而不會導致刷新和php調用時間衝突。

+0

哪裏是你的php代碼 –

+0

外部的php文件是一個簡單的$ sql腳本,用於更新我的mysql表上的一個變量以及圍繞該表的所有內容,比如語句準備和執行以及捕獲。我的印象是代碼無法改進,所以我沒有包含它,因爲它只是服務器端。我質疑效率的腳本是我最初發布的腳本。 – Adrea

回答

0

使1功能做所有的事情被認爲是不好的做法,一個功能應該做的,只做一個原子任務。你的代碼很好,除了一些小點:

  • ajax調用$ .get()和location.reload不應該與對方一起使用,因爲這會破壞ajax調用的含義。你可以通過一個回調函數來處理來自後端服務器數據,如 $.get("f_solar_1.php", function(data) { alert("Load was performed."); });
  • 將所有腳本標記爲1與您的所有功能聲明

問候,

+0

儘管你的意見反對混合阿賈克斯和location.reload ...結果是美麗的! 我有一種感覺(現在我是新來的,因此這裏沒有可信度),即時刷新頁面inturrupts調用PHP頁面更新MySQL數據庫表,這就是爲什麼我不能包括所有功能作爲一個函數。你的建議解決了這個問題。我知道有一種更有效的方法! 我的下一步是研究回調函數的潛力。謝謝! – Adrea

0

你有沒有通過後端檢查數據庫(例如phpmyadmin),並驗證是否正在進行更改,即使它不顯示?

我想知道你的網頁是不是真的令人耳目一新,只是去「#」。檢查「返回錯誤」 - 它不是真的適用於「A」鏈接,您必須在「雙方」函數中爲「取消鏈接」放置「返回錯誤」。但你可能不想這樣做後花一點時間來閱讀:The return false onclick anchor not completely working

此外,我建議使用jquery添加事件偵聽器來觸發您的函數調用,並獲得您的html標籤的onClick 。獎金,如果你學習如何做到這一點沒有jQuery。閱讀此真實快jquery href and onclick separation

+0

我的頁面按我的意圖工作,頁面的行爲不需要修復。它是代碼本身只是覺得效率低下有3個功能加上一個單獨的PHP文件,只是點擊一個按鈕即時更新頁面上顯示的表。我只想到每個必須創建的變量旁邊的所有開/關開關,並將它們分別乘以3個函數。我知道我可以使用文本字段來做同樣的事情來簡化,但我想知道這種方法是否可行。 – Adrea

+0

我已經徹底地探索了您提供的兩篇文章,並對每個建議的腳本進行了鏡像,並且可以讓每個代碼運行並執行我想要的操作,直到我將它們的函數替換爲刷新腳本。這導致我相信瀏覽器正在觸發與php文件一致的刷新,該文件更新mysql數據庫表並且沒有時間執行。如果是這種情況,我的延期重新加載功能是必要的,就像我有它,除非有一個更清潔的方法實現我不知道的相同效果 – Adrea

+0

,在這種情況下,我希望學習(今天是我的第2天除了記事本中的html以外的編程)。 如果你正在想象一個jQuery免費的方法,請分享。我會找出腳本部分,如果你只是將語言命名爲可交替的並告訴我它是可能的。 感謝您的反饋。 – Adrea