【发布时间】:2023-03-22 21:25:01
【问题描述】:
我有一个非常奇怪的问题,当我 POST 到我的 PHP 文件时,它返回一个 404 状态码,而当我执行 GET 请求时,它给我一个状态码 200。 我用 XMLHttpRequest、Fetch、Axios 和 jquery 尝试了我的请求,但都给出了相同的响应。 我做错了什么?
这些是我的 ajax 请求。
const body = { firstName: 'Fred',lastName: 'Flintstone' };
const handleSubmit = async (e) => {
e.preventDefault()
fetch(`ajaxHandler.php`)
.then(res =>
console.log(res)
)
fetch('ajaxHandler.php', {
method: 'POST',
// mode: 'CORS',
body: JSON.stringify(body),
headers: {
'Content-Type': 'application/json'
}
}).then(res => {
console.log(res);
}).catch(err => console.log(err));
}
来自控制台的 POST 请求响应。
login.js:20 POST http://localhost:3000/ajaxHandler.php 404 (Not Found)
handleSubmit @ login.js:20
onClick @ login.js:65
callCallback @ react-dom.development.js:336
invokeGuardedCallbackDev @ react-dom.development.js:385
invokeGuardedCallback @ react-dom.development.js:440
invokeGuardedCallbackAndCatchFirstError @ react-dom.development.js:454
executeDispatch @ react-dom.development.js:584
executeDispatchesInOrder @ react-dom.development.js:609
executeDispatchesAndRelease @ react-dom.development.js:713
executeDispatchesAndReleaseTopLevel @ react-dom.development.js:722
forEachAccumulated @ react-dom.development.js:694
runEventsInBatch @ react-dom.development.js:739
runExtractedPluginEventsInBatch @ react-dom.development.js:880
handleTopLevel @ react-dom.development.js:5803
batchedEventUpdates$1 @ react-dom.development.js:24401
batchedEventUpdates @ react-dom.development.js:1415
dispatchEventForPluginEventSystem @ react-dom.development.js:5894
attemptToDispatchEvent @ react-dom.development.js:6010
dispatchEvent @ react-dom.development.js:5914
unstable_runWithPriority @ scheduler.development.js:697
runWithPriority$2 @ react-dom.development.js:12149
discreteUpdates$1 @ react-dom.development.js:24417
discreteUpdates @ react-dom.development.js:1438
dispatchDiscreteEvent @ react-dom.development.js:5881
login.js:28 Response {type: "basic", url: "http://localhost:3000/ajaxHandler.php", redirected: false, status: 404, ok: false, …}
从控制台获取响应
login.js:16 Response {type: "basic", url: "http://localhost:3000/ajaxHandler.php", redirected: false, status: 200, ok: true, …}
ajaxHandler (PHP) 代码
<?php
session_start();
header('Access-control-Allow-Methods: POST,GET,DELETE,OPTIONS');
header('Accept: application/json');
$response = array("success" => true, "message" => "yeahhh");
echo json_encode($response);
【问题讨论】:
-
问题显然不在于前端(JS),而在于后端(PHP)。你能分享你用作后端的 PHP 代码吗(
ajaxHandler.php)? -
@MatteoMeil 我已经添加了 PHP 代码。
-
您是从不同的来源调用 php 脚本吗?即:js脚本从
localhost:8000运行,而php从localhost:3000运行? -
@MatteoMeil 不,我从 localhost:3000 和我的 PHP 文件 localhost:3000/ajaxHandler.php 调用我的 JS 脚本
标签: javascript jquery ajax reactjs axios