你们能帮我吗?我一直在尝试从Axios的URL中获取作为参数放置的token(是的,ID也包含在URL中,但对于if else,它是static条件)。我试着欺骗请求方法,但由于如果将方法设置为POST,那么它将无法正常工作,因此它将保持为POST。它不会获取,删除或更新其他任何内容。也尝试了file_get_contents,但是由于它不是POST,所以不会读取它。还尝试了stackoverflow的其他答案,但它们没有后端部分。
index.js
findSub ({ commit }, payload) {
return new Promise((resolve, reject) => {
axios
.get('http://localhost/MyComposer/?id=00', {
params: {
token: this.state.token
}
})
.then(response => {
resolve(response)
})
.catch(error => {
reject(error)
})
})
},
index.php
<?php
require 'Classes/Headers.php';
require 'vendor/autoload.php';
use Classes\SubjectClass;
use Classes\TestClass;
use Classes\AnswerClass;
use Classes\LoginClass;
use Classes\TeacherClass;
use Classes\AccountClass;
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$addsubject = new SubjectClass();
$addsubject->addSubject();
$addtest = new TestClass();
$addtest->addTest();
$submitTest = new AnswerClass();
$submitTest->submitTest();
$submitLoginData = new LoginClass();
$submitLoginData->submitLoginData();
$addTeacher = new TeacherClass();
$addTeacher->addTeacher();
$findSub = new TeacherClass();
$findSub->findSub();
}
if ($_SERVER["REQUEST_METHOD"] == "GET") {
$subOptions = new SubjectClass();
$subOptions->getSubName();
$testOptions = new TestClass();
$testOptions->getTest();
$accountOp = new AccountClass();
$accountOp->getAccount();
}
SubjectClass.php
public function getSubName {
if ($_SERVER['QUERY_STRING'] === 'id=00') {
$data = file_get_contents('php://input');
$tokenId = json_decode($data);
$token = $tokenId->{'token'};
$db->where('AccessId', $access_id);
$subId5 = $db->get('accounts');
if ($subId5) {
echo json_encode($subId5);
}
}
}
从Axios documentation ...
params
是与请求一起发送的URL参数
Axios能够将URL(即?id=00
)中的任何查询参数与params
对象合并。使用您正在使用的客户端代码,这将导致GET
请求
http://localhost/MyComposer/?id=00&token=some-token-value
无论请求类型如何,PHP都会通过$_GET
超全局数组访问查询参数。这意味着只要您使用
params: { token: someTokenValue }
对于GET
,POST
,DELETE
或任何请求方法,PHP可以通过以下方式访问令牌:>
$token = $_GET['token'] ?? null; // or whatever makes sense as a default
一些关于您的JS代码的建议...
state
参数而不是context
访问this.state
params
中混合查询参数。后者要容易得多,并且可以正确编码值findSub: ({ state }) => axios.get('http://localhost/MyComposer/', {
params: {
id: '00',
token: state.token
}
})