2017-10-29 154 views
0

我与从DB获得的变量$ consult_id PHP文件如下获得PHP变量:无法使用AJAX请求

$consult_id = $row['consult_id']; 

同样的php文件包括在底部的另一个文件2其中既包括PHP和JavaScript。相关的代码是:

$http({ 
method: 'get', 
url: 'inc/token.inc.php' 
}).then(function(response) { 
//alert(response); 
data = JSON.parse(response); 

token.inc.php文件中文件在上述代码中引用2如下:

$apiObj = new MYAPI(API_KEY, API_SECRET); 
$sessId = $consult_id; 
$connectionData = $name; 
$token = $apiObj->generateToken($sessionId , array(
    'data'  => $connectionData 
)); 
$dresponseData = array(
     'sessionId' => trim($sessId), 
     'token'=>trim($token) 
    ); 

echo json_encode($dresponseData); 

如果我硬编码串中的以下它完美的作品:

$sessId = XXXXXXXXXX; //insead of $consult_id 

我试过以下和很多其他事情没有成功:

$sessId = json_encode($consult_id,JSON_HEX_TAG); 

的$ sessId总是给

我知道它是与“Ajax和PHP”但作为一个新手无法识别的问题。

硬编码的字符串工作正常。

+1

$ consult_id在其他PHP文件不确定的。 您需要为ajax请求函数使用“data”参数,所以您可以将consult_id变量的值传递给另一个php文件。 –

+0

@OfirBaruch $ consult_id的定义和尝试与成功相呼应。 – Pamela

+0

1.启用正确的PHP错误报告,2.通过检查浏览器开发工具,网络选项卡中的AJAX请求,检查脚本实际返回的内容。 – CBroe

回答

0

token.inc.php文件是一个分隔文件。 变量$consult_id正在另一个文件中定义,所以即使你有一个ajax请求 - 它不涉及到php的变量的范围

如果您将包含token.inc文件与PHP命令(如:include/require) - 那么,将有可能访问该变量。

您需要做的是在您的ajax请求中使用data参数(如我在评论中所建议的)并将该变量传递给其他文件。

JS:

$http({ 
method: 'post', //changed to post 
data: {consultId: '<?php echo $consult_id; ?>'}, //added the 'data' parameter 
url: 'inc/token.inc.php' 
}).then(function(response) { 

在token.inc.php文件:

$sessID = $_POST['consultId']; 
+0

谢谢。让我尝试一下并理解它。 – Pamela

+0

不工作。在开发者工具中没有获得POSTED? – Pamela

+0

这段代码应该可以工作。考虑上传演示,以便我们能够调试和分析出现了什么问题。 –