2015-04-23 36 views
0

好吧,我正在嘗試將PHP文檔設置爲PHP中的變量?將JavaScript文件設置爲PHP中的變量

基本上我設置的WiFi速度我一個JavaScript文件中的變量計算,這樣我就可以與其他信息作爲一個實例數據庫保存變量值。

的JavaScript代碼是很長,所以我不知道我是否應該複製整個代碼,並將其設置等於變量或是否有語法將其設置爲一個變量。

我看到:

<script type="text/javascript" src="file.js"></script> 

在線調用JavaScript文件,但不知道如何獲取該值,並將其存儲在一個變量。

+0

謝謝,我將盡力加入這個。 – LeslieKnowsBest

回答

0

你可以做這樣的事情

$js = file_get_contents('http://www.example.com/javacsript.js'); 

$value = trim(str_replace(array("document.write('", "');"), '', $js)); 

echo $value; 

希望這將幫助你

+1

這只是將js的內容保存在一個php變量中,但不會將javascript alghoritm(即獲取WiFi速度)的結果保存在php變量中。這不回答OP問題。 – clami219

0

中的JavaScript必須在瀏覽器客戶端執行。流將是:

  1. PHP生成HTML(至極包括JS代碼)
  2. HTML被髮送到
  3. 的瀏覽器呈現的HTML和執行JS
  4. 的瀏覽器與所述通信的瀏覽器服務器以告知結果

根據JS是庫還是腳本,具體步驟會有所不同。但基本上在標籤內部,您必須將結果保存到變量中,然後進行AJAX調用(使用jQuery.ajax()更容易)將該變量傳遞給服務器,然後服務器可以對其執行某些操作。

我希望能幫助你走上正確的軌道。如果展開在你的問題的信息,我會嘗試更新我的答案:)

+0

這正是我所要求的,應該感謝。 – LeslieKnowsBest

0

你有這個使用POST,可能是爲了同一個PHP腳本做。

<form method='post' id=myform> 
<input type=hidden id=js-to-php value=0> 
</form> 
<script> 
jQuery(document).ready(function(){ 
//calulcate the wifispeed using the long js code 
//then save it in the field 
$('#js-to-php').val(YOUR_SPEED); 
// send the form 
$('#myform').submit(); 
}); 
</script> 

,然後在同一個腳本:

if(isset($_POST['js-to-wifi']) && $_POST['js-to-wifi']!='') { 
    // store your stuff in DB 
} 
+0

關於js-to-php的作品究竟是什麼?我是否在輸入html標記中命名了一個變量,然後將其放置在那裏? – LeslieKnowsBest

0

所以這裏是Java腳本代碼:

//Source: http://stackoverflow.com/questions/5529718/how-to-detect-internet-speed-in-javascript 


var imageAddr = "http://www.kenrockwell.com/contax/images/g2/examples/31120037-5mb.jpg"; 
var downloadSize = 4995374; //bytes 

window.onload = function() { 
    var oProgress = document.getElementById("progress"); 
    oProgress.innerHTML = "Loading the image, please wait..."; 
    window.setTimeout(MeasureConnectionSpeed, 1); 
}; 

function MeasureConnectionSpeed() { 
    var oProgress = document.getElementById("progress"); 
    var startTime, endTime; 
    var download = new Image(); 
    download.onload = function() { 
     endTime = (new Date()).getTime(); 
     showResults(); 
    } 

    download.onerror = function (err, msg) { 
     oProgress.innerHTML = "Invalid image, or error downloading"; 
    } 

    startTime = (new Date()).getTime(); 
    var cacheBuster = "?nnn=" + startTime; 
    download.src = imageAddr + cacheBuster; 

    function showResults() { 
     var duration = (endTime - startTime)/1000; 
     var bitsLoaded = downloadSize * 8; 
     var speedBps = (bitsLoaded/duration).toFixed(2); 
     var speedKbps = (speedBps/1024).toFixed(2); 
     var speedMbps = (speedKbps/1024).toFixed(2); 
     oProgress.innerHTML = "Your connection speed is: <br />" + 
      speedBps + " bps<br />" + 
      speedKbps + " kbps<br />" + 
      speedMbps + " Mbps<br />"; 
    } 
} 

我想,這將返回值(我會編輯代碼,所以我只得到一個值),然後將其放置在一個PHP變量。問題是,當我使用後在網頁上運行它:

$Speed = file_get_contents('wiFiCalc.js'); 
$value = trim(str_replace(array("document.write('", "');"), '', $Speed)); 
echo $value; 

我剛剛得到的html頁面的代碼,如clami219如上所述。我只想返回該值來打印它並將其存儲在數據庫中。

另外,Jobst,你寫的方式有點難以遵循。我在我的HTML代碼中使用表單動作來提高速度,以便在返回到下一個HTML頁面之前將其存儲在數據庫中,這樣您可以解釋代碼的工作原理了嗎?