2012-07-10 53 views
0

我有一个php脚本,它可以计算非常长的事情。如何在Javascript POST方法中包含php文件

它从一个js文件中调用,我想从另一个php文件中调用它,除了从js文件调用它。

该文件称为strategy.server.php,它是建立像这样

<?php 
    include_once("../config.php"); 
    include_once("../class/simulator.class.php"); 

    $simulator = new Simulator(); 
    $SPOT = $_GET["strikePrice"]; 
    $INTEREST = $_GET["interestRate"]/100; 
    $VOLATILITY = $_GET["volatility"]/100; 
    $REMAININGDAYS = $_GET["remainingDays"]/365; 

    header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); 
    header("Last-Modified: " . gmdate("D, d M Y H:i:s") . "GMT"); 
    header("Cache-Control: no-cache, must-revalidate"); 
    header("Pragma: no-cache"); 
    header("Content-type: application/json; charset=utf-8"); 

    if(!empty($_GET['mycase'])) 
    { 
     switch($_GET['mycase']) 
////calculations... 
      $data['totalMargin']; 
      echo json_encode($data); 

我想我们同一个文件来计算不同参数(在循环中)。
所以我想过使用的包括和张贴,像这样的参数:

$params   = "some params..."; 
$params  .= "strikePrice=".$data["strikePrice"]. 
     "&volatility=".$data["volatility"]. 
     "&remainingDays=".$data["remainingDays"]. 
     "&interestRate=".$data["interestRate"]. 
     "&commission="."7".//$data["commission"]. 
     "&profitDays="."7";//$data["profitDays"]; 

include("server/strategy.server.php?" .$params); 
json_decode($data); 
echo $data['totalMargin']; 

,但它给出了一个错误:
Warning: include(server/strategy.server.php?mycase=1&rangeMin=0&rangeMax=0&strikePrice=1078&volatility=24&remainingDays=51&interestRate=2.5&commission=7&profitDays=7) [function.include]: failed to open stream: No such file or directory in C:\xampp\htdocs\s-maof-vb\PRO\functions_alarms.php on line 86

如果我包括与参数的文件,它加载了(但没有参数..)

回答

0

包括一个PHP文件可以将文件中的所有操作插入到当前正在执行的PHP文件中,因此在范围内定义的任何参数都可以从代码中访问。

例如,如果我有一个与内容称为echo.php文件:

<?php 
echo $test."\n"; 

而另一个文件中包含它:

<?php 
$test= "hello"; 
include("echo.php"); 
$test = "world"; 
include("echo.php"); 

其结果将是:

hello 
world 

所以包含文件的参数不会使用HTTP GET方法传递,而只是通过什么传递在范围内定义。另外,将参数读取到unix文件名的末尾将导致文件系统查找磁盘上的整个字符串。

对于上面的例子,该文件将编译出来是:

<?php 
$test= "hello"; 
echo $test."\n"; 
$test = "world"; 
echo $test."\n"; 

因此你的情况,你可能要编辑的strategy.server.php脚本首先要检查的参数数组数据是否通过,然后默认为GET:

if(empty($params)){ 
    $params = $_GET; 
} 
// filter params for user input; 
+0

您好保罗,感谢您的回复。因为你可以看到问题更基本。该脚本无法首先加载文件! – devmonster 2012-07-10 09:25:00

+0

啊好的,那里的文件是相对于被包含的文件?如果你采用get参数,它是否工作? 'include(server/strategy.server.php);' – 2012-07-10 09:35:02

+0

是的。我正在尝试设置_GET变量befoe,包括如下所示的函数:$ _GET ['mycase'] = 1; – devmonster 2012-07-10 09:52:38

0

include函数不以HTTP的方式接受参数。此外,您尝试执行的操作并非最佳做法,因为它多次包含相同的文件。你必须创建一个for-或while循环遍历$ data数组值。

如果你还想要这个功能,我建议使用cURL libraryfile_get_contents()来调用脚本(而不是包括)。