电子 AJAX 请求 return 原始 PHP
Electron AJAX request return raw PHP
我正在使用 Electron 开发一个信息亭应用程序。目前,我坚持使用本机 Javascript 代码向服务器发出 AJAX 请求(no JQuery)。每次我发出 AJAX 请求时,它总是返回原始 PHP 代码。这是我的项目目录:
SelfService
|- script
|- login.js
|- lib
|- userAuth.php
|- node_modules
|- index.html
|- index.js
|- package.json
|- package-lock.json
在我的javascript中,我尝试将"Content-Type"设置为"application/json",或者按照网上另一个AJAX请求的例子,将其设置为"application/x-www-form-urlencoded" 在发送 XMLHttpRequest 之前,但它们仍然返回原始 PHP 代码。
至于服务器端,我已经将header设置为"Content-Type: application/json"并使用json_encode作为结果。
旁注:我将 Electron 安装在与 Web 服务器不同的驱动器上。我在默认位置 (C:\wamp)
安装了 WAMP,而在 D:
驱动器上安装了 Electron(我想知道这是否真的重要)
index.html:
<body>
<input type="text" id="input_id" value="" />
<button onclick="authenticateID();">Click to authenticate ID</button>
<div id="response"></div>
</body>
/script/login.js:
function authenticateID () {
var xhr = new XMLHttpRequest();
var url = 'lib/userAuth.php'
var params = 'id=' + document.getElementById('input_id').value;
xhr.open('POST', url, true);
xhr.setRequestHeader('Content-Type', 'application/json');
// xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
xhr.onload = function () {
if (this.readyState == 4 && this.status == 200) {
var xhrResult = JSON.parse(xhr.responseText);
var responseContainer = document.getElementById(response);
responseContainer.innerHTML = xhrResult.isValidID;
}
}
xhr.onerror = function () { alert('Something went wrong') }
xhr.send(params);
}
/lib/userAuth.php:
<?php
header('Content-Type: application/json');
$result['isValidID'] = (!empty($_POST['id'])) ? '1' : '0';
echo json_encode($result);
?>
如果用户在文本框中输入 ID,我预计输出将是“1”或“0”,但是当我用 alert(xhr.responseText)
显示 xhr.responseText 时,它返回lib/userAuth.php
的整个原始 PHP 代码
编辑: 现在这是我犯的一个大错误。我虽然 Electron 有某种可以处理 PHP 文件的 built-in 网络服务器,所以我把我的 PHP 文件放在项目文件夹中,它与网络服务器位于不同的位置。现在我已经将PHP脚本分离到网络服务器中,我应该如何在var url = 'lib/userAuth.php'
中设置URL?我试过 localhost/SelfService/lib/userAuth.php
但在错误日志中,它显示 ERR:FILE_NOT_FOUND
服务器返回 PHP 代码的唯一原因是您的服务器配置不正确。检查您的服务器文件是否位于本地主机服务器文件夹中。
我正在使用 Electron 开发一个信息亭应用程序。目前,我坚持使用本机 Javascript 代码向服务器发出 AJAX 请求(no JQuery)。每次我发出 AJAX 请求时,它总是返回原始 PHP 代码。这是我的项目目录:
SelfService
|- script
|- login.js
|- lib
|- userAuth.php
|- node_modules
|- index.html
|- index.js
|- package.json
|- package-lock.json
在我的javascript中,我尝试将"Content-Type"设置为"application/json",或者按照网上另一个AJAX请求的例子,将其设置为"application/x-www-form-urlencoded" 在发送 XMLHttpRequest 之前,但它们仍然返回原始 PHP 代码。
至于服务器端,我已经将header设置为"Content-Type: application/json"并使用json_encode作为结果。
旁注:我将 Electron 安装在与 Web 服务器不同的驱动器上。我在默认位置 (C:\wamp)
安装了 WAMP,而在 D:
驱动器上安装了 Electron(我想知道这是否真的重要)
index.html:
<body>
<input type="text" id="input_id" value="" />
<button onclick="authenticateID();">Click to authenticate ID</button>
<div id="response"></div>
</body>
/script/login.js:
function authenticateID () {
var xhr = new XMLHttpRequest();
var url = 'lib/userAuth.php'
var params = 'id=' + document.getElementById('input_id').value;
xhr.open('POST', url, true);
xhr.setRequestHeader('Content-Type', 'application/json');
// xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
xhr.onload = function () {
if (this.readyState == 4 && this.status == 200) {
var xhrResult = JSON.parse(xhr.responseText);
var responseContainer = document.getElementById(response);
responseContainer.innerHTML = xhrResult.isValidID;
}
}
xhr.onerror = function () { alert('Something went wrong') }
xhr.send(params);
}
/lib/userAuth.php:
<?php
header('Content-Type: application/json');
$result['isValidID'] = (!empty($_POST['id'])) ? '1' : '0';
echo json_encode($result);
?>
如果用户在文本框中输入 ID,我预计输出将是“1”或“0”,但是当我用 alert(xhr.responseText)
显示 xhr.responseText 时,它返回lib/userAuth.php
编辑: 现在这是我犯的一个大错误。我虽然 Electron 有某种可以处理 PHP 文件的 built-in 网络服务器,所以我把我的 PHP 文件放在项目文件夹中,它与网络服务器位于不同的位置。现在我已经将PHP脚本分离到网络服务器中,我应该如何在var url = 'lib/userAuth.php'
中设置URL?我试过 localhost/SelfService/lib/userAuth.php
但在错误日志中,它显示 ERR:FILE_NOT_FOUND
服务器返回 PHP 代码的唯一原因是您的服务器配置不正确。检查您的服务器文件是否位于本地主机服务器文件夹中。