2015-04-23 94 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页面之前将其存储在数据库中,这样您可以解释代码的工作原理了吗?