2012-10-23 76 views
1

大家好,我的問題是關於一個問題是如何解決的?一個朋友有類似HTML的代碼:用ajax改變腳本標記,爲什麼還在工作?

<div id="result"> 
    <script type="text/javascript"> 
     function selectColor(value){ 
      return "#319336"; 
     } 
    </script> 
</div> 

,並在結果jQuery的.load()調用調用PHP文件與發送功能這樣

<?php 
    function returnFuntion(){ 
     return '<script type="text/javascript"> 
      function selectColor(value){ 
       switch(value){ 
        case "a": 
         return "#000000"; 
         break; 
        case "b": 
         return "#FFFFFF"; 
         break; 
        default: 
         return "#319336"; 
       } 
     }</script>'; 
    } 
?> 

我不知道這是怎麼工作的,但在所有瀏覽器上運行的JavaScript函數,我的朋友說,「它的工作原理不用擔心」。怎麼了?爲什麼JavaScript能夠識別新代碼而不是舊代碼?這是一個正確的方法嗎?最初的問題是JavaScript函數的返回值必須隨從MySQL獲取的MySQL值而改變。

+0

我覺得load()在頁面中添加了後者,然後初始定義。所以每次調用都需要最後的定義。 – lavrik

+1

第一個函數應該做什麼?爲什麼它接受一個沒有使用的參數'value'?爲什麼要將簡單的字符串抽象成一個函數 – migg

+0

@migg是調用selectColor的另一個函數的一部分,併發送表示顏色的值,但尚未獲得DB的值,因此將返回默認值。在mysql數據庫中寫入關係顏色值,但如果未選擇用戶,則該關係與用戶 - [顏色值]之間的關係處於另一關係中,關係顏色值的數據未設置且功能必須爲宣佈以防止錯誤。 – luismy

回答

1

這些是函數聲明,解析器在讀取任何代碼之前總是讀取這些聲明。

因此,當第二個被定義

function a(){ 

     alert('Hello'); 
    } 

    function a(){ 

     alert('Second Function !!'); 
    } 

    a(); // Call-- 

FIDDLE

+0

我懷疑你的答案是否與他所問的相關。你回答的是關於ovrriding功能。他沒有被覆蓋的功能。他問第一個沒有工作,但第二個工作。他想知道爲什麼。對不起,如果我不明白這個問題。 –

+0

感謝您的回答,以及...實際上這解釋瞭如何工作,我很抱歉也許是不好的解釋,但我不知道重寫是我的朋友在做什麼的名稱,我不知道如果重寫功能是很好,但現在我知道那是如何工作的。 – luismy

0

第一功能是簡單地覆蓋在理想情況下這兩個腳本應該完美地工作,但第一個是真的不內編寫JavaScript的好方法DIV。如果它不工作,可能是因爲該函數在被加載之前被調用。第二個是好的,因爲PHP格式化的JavaScript和它的準備好打印在你的網頁的某個地方。要記住的關鍵是首先應該加載/打印函數,然後應該調用它以避免任何錯誤。

0

@luismy,在服務器和客戶端之間交換數據總是比較好,而不是腳本。我只是好奇你爲什麼不在客戶端實現UI邏輯,以及服務器上的應用程序邏輯?特別是對於這個例子,即使進行XHR呼叫也沒有意義。

+0

它是針對mysql中的表結構,它是一個與item - > {color-> value}相關的關係,以便具有關係的color-value,我需要用戶選擇項來選擇要調用的關係。 – luismy

+0

是的,但如何通過一個JS函數解決您的問題? –

+0

選擇「項目」後,我做了一個ajax調用以獲取與顏色和值的關係,該關係在js中定義,我編寫的示例代碼就是這樣的一個例子,真正的代碼與其他值一起工作並執行其他操作東西來創建JS函數,但我不能顯示真正的代碼,我不知道JavaScript函數可以被覆蓋。我希望能迴應你的問題@mvbl。 – luismy

0

如果您正在加載的JavaScript,使用getScript()

有PHP代碼只返回就像你正在寫一個外部文件中的內容。確保也設置內容類型。

相關問題