2013-12-17 134 views
-3

我是JavaScript新手,無法跨越解釋以下情況的教程。你可以把一個jQuery函數的輸出放入一個變量中嗎?

我想在這裏實現的目標是我將得到我的jQuery函數的輸出並將其放置在變量中。更明確的說,我想從MySQL表中提取數據並將數據放入一個變量中。

然後,我將使用該變量將被用於另一個變量,這是一個計算。

功能(我知道下面的代碼無法正常工作,但我不知道什麼是正確的):

var sliderValue = function() { 
     $.ajax({ 
     url: "select.php", 
     type: "GET", 
     success: function(result) { 
      // alert(result); 
      return result; 
     } 
     }); 
    }); 

使用變量(忽略TOTALCOST變量):

var startValue = ((sliderValue - totalCost)/totalCost) * 100; 

我知道上面的變量計算在我使用基本變量如var totalCost = "52";時有效。

感謝您的幫助提前。

+0

不能確定你所要求的。如果PHP文件'選擇。php'輸出一個數字,你的計算應該工作。假設你將'var totalCost'設置在其他地方...? – superphonic

+1

@웃웃웃웃웃你不能 –

+0

php輸出一個數字。 totalCost只是一個現在包含一個數字的變量。當我弄清楚如何正確執行AJAX調用時,它會得到類似的處理。 – dvoutt

回答

2

您在這裏缺少一些概念。首先,這條線:

var startValue = ((sliderValue - totalCost)/totalCost) * 100; 

不會起作用,因爲sliderValue是一個函數,而不是一個函數的結果。你可以並經常將參數傳遞給函數,但在這種情況下它是沒有意義的。

你可以通話的函數:

var startValue = ((sliderValue() - totalCost)/totalCost) * 100; 

或者使用IIFE(立即調用的函數表達式):現在

var sliderValue = (function() { 
    return "53"; 
})(); 

sliderValue持有價值53,而不是一個參考到這個功能,這個工程:

var startValue = ((sliderValue - totalCost)/totalCost) * 100; 

但是,這兩種解決方案都不能與ajax調用一起使用,因爲您在那裏使用。 Ajax調用是異步的,並且不以那種方式工作。請參閱how to return the response from an ajax call

0

你必須讀一點關於AJAX。 AJAX是關於使異步請求。這意味着您的程序不會等到通話結束並收到結果後,纔會繼續通話。它會通過調用您傳遞給$ .ajax函數的成功(如果請求成功,否則錯誤)函數來通知您結果已收到。因此,正確的做法是傳遞一個回調函數並在成功時調用它。 所有這些東西都是jQuery。使用jQuery作出AJAX之前,您應該學會使用AJAX請求

var sliderValue = function(callback) { 
     $.ajax({ 
      url: "select.php", 
      type: "GET", 
      success: function(result) { 
       // alert(result); 
       callback(result); 
      } 
     }); 
}); 

然後

sliderValue(funciton(result){ 
    //And you have your result here 
    alert(result); 
}) ; 
相關問題