【问题标题】:How do I connect JS app with file PHP - php file not found如何将 JS 应用程序与文件 PHP 连接 - 找不到 php 文件
【发布时间】:2020-07-06 16:44:34
【问题描述】:

我的 JS APP 有问题,我无法通过 php 文件从 jquery 发送数据,因为我有错误: 发布https://magazyn.rob-tech.pl/savesettings.php 404

我通过PORT=8080 npm run start 运行应用程序 package.json 看起来像:

    {
  "name": "qr-code-scanner",
  "version": "1.0.0",
  "description": "",
  "main": "index.html",
  "scripts": {
    "start": "parcel index.html --open",
    "build": "parcel build index.html"
  },
  "dependencies": {
    "express": "^4.17.1",
    "mysql": "^2.18.1"
  },
  "devDependencies": {
    "@babel/core": "7.2.0",
    "parcel-bundler": "^1.6.1"
  },
  "keywords": []
}

我认为404表示APP找不到文件(savesettings)。也许我应该在同一个端口上以某种方式运行 php 文件?

function saveUserTimes() {
        
    $.post("savesettings.php",
    {
        name: 'bosch',
        pracownik: 888,
        czynnosc: 'Pobranie',
        data: '',
    },
    function(data,status){
        document.getElementById("saveWarningText").innerHTML = data;
        $( "#saveWarningText" ).fadeIn(100);
        setTimeout(function(){ $( "#saveWarningText" ).fadeOut(100); }, 3000);
    });
    
    }

但我不知道,我该怎么做, 我的 index.html:

<!DOCTYPE html>
<html>
  <head>
    <title>Zapisywanie</title>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=0" />
    <link rel="stylesheet" href="src/styles.css" />
    <script src="https://rawgit.com/sitepoint-editors/jsqrcode/master/src/qr_packed.js"></script>
    <script src="https://code.jquery.com/jquery-1.12.4.js" integrity="sha256-Qw82+bXyGq6MydymqBxNPYTaUXXq7c8v3CwiYwLLNXU=" crossorigin="anonymous"></script>
    <?php require_once 'savesettings.php'; ?>
  </head>

  <body>
    <div id="container">
      <h1>Magazyn rob-tech</h1>
      <div id='saveWarningText'></div>
      <p id="demo" font-color="white"></p> 
      <a id="btn-scan-qr">
        <img src="logo.jpg">
      <a/>
      

      <canvas hidden="" id="qr-canvas"></canvas>

      <div id="qr-result" hidden="">
        <b>Narzędzie:</b> <span id="outputData"></span><br>
        
        <form>
          <b>Numer pracownika&nbsp;&nbsp;</b><input type="number" id="nr_pracownika" min="1" max="999"><br>
          <input type="radio" id="pobranie" >
          <label>Pobranie</label><br>
          <input type="radio" id="oddanie" >
          <label>Oddanie</label><br>
          <button class="button" onclick="naSerwer()">Wyślij na serwer</button>
        </form>

      </div>
      <div id="qr-result" hidden="">
        
        
      </div>
    </div>
    <script>

      function saveUserTimes() {
    $.post("savesettings.php",
    {
        name: 'bosch',
        pracownik: 888,
        czynnosc: 'Pobranie',
        data: '',
    },
    function(data,status){
        document.getElementById("saveWarningText").innerHTML = data;
        $( "#saveWarningText" ).fadeIn(100);
        setTimeout(function(){ $( "#saveWarningText" ).fadeOut(100); }, 3000);
    });
    
    }
    </script>

    <script src="./src/qrCodeScanner.js"></script>
    <script>
      


    function naSerwer() {
      saveUserTimes();
  }
  
    </script>

  </body>
</html>

我的php文件:

<?php
$servername = "localhost";
$username = "admin_mag";
$password = "passowrd";
$dbname = "admin_magazyn";

$conn = new mysqli($servername, $username, $password, $dbname); // Create connection
if ($conn->connect_error) {     // Check connection
    die("Connection failed: " . $conn->connect_error);
} 

$narzedzie = mysqli_real_escape_string($conn, $_POST['narzedzie']);
$pracownik = mysqli_real_escape_string($conn, $_POST['pracownik']);
$czynnosc = mysqli_real_escape_string($conn, $_POST['czynnosc']);
$data = mysqli_real_escape_string($conn, $_POST['data']);

if (strlen($times) > 200000) {  $times = "";    }

$sql = "INSERT INTO narzedzia (narzedzie,pracownik,czynnosc,data)
VALUES ('makita', '123', 'pobranie', 'CURDATE()') ON DUPLICATE KEY UPDATE    
date=CURDATE()";

if ($conn->query($sql) === TRUE) {
    echo "Page saved!";
} else {
    echo "Error: " . $sql . "<br>" . $conn->error;
}
$conn->close();

?>

【问题讨论】:

  • 如果我理解您的问题,您正尝试从 ParcelJS 提供的代码向https://magazyn.rob-tech.pl/savesettings.php 发出POST 请求。您是否尝试过使用 Postman 或类似工具访问 https://magazyn.rob-tech.pl/savesettings.php
  • 在代码中使用$conn-&gt;error 是一个非常糟糕的主意,因为它可能会泄露敏感信息。更多解释见这篇文章:mysqli or die, does it have to die?

标签: javascript php html jquery npm


【解决方案1】:

如果 savesettings.php 与 index.html(带有 JS)位于同一目录,则添加 ./ 使其成为可能

function saveUserTimes() {
        
    $.post("./savesettings.php",
:
:
:

否则,这里有一些提示,以防万一... 正如我所见,我们需要考虑包含 .js 文件的文件夹(其中 .js 文件包含 AJAX 代码)。

如果php代码在同一个文件夹,我们可以使用

$.post("./savesettings.php",   //or
$.post("savesettings.php",

如果(带有绝对目录引用)php代码在服务器根目录下,我们可以使用

$.post("/savesettings.php",

或(带有相对目录引用)如果例如.js 在 c:/somefolder1/js 当 .php 在 c:/somefolder1/php 中时,我们可以使用

$.post("../php/savesettings.php",

其中 ../ 表示我们要向上移动到父目录。 '希望对你有帮助

【讨论】:

    猜你喜欢
    • 2023-03-28
    • 2018-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-21
    • 1970-01-01
    • 2014-05-31
    • 2019-09-11
    相关资源
    最近更新 更多