我有一个带有从DB获得的变量$ consult_id的php文件,如下所示:
$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);
file 2 中上述代码中引用的 token.inc.php 文件如下:
$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始终提供 null
我知道它与“ajax和php”有关,但作为新手无法识别问题。
对字符串进行硬编码工作正常。
答案 0 :(得分:0)
token.inc.php
文件是一个单独的文件。
变量$consult_id
正在另一个文件中定义,所以即使你有一个ajax请求 - 它与php的变量范围无关。
如果您使用PHP命令(例如:include/require
)包含token.inc文件 - 那么,就可以访问该变量。
您需要做的是在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'];