这是ajax与php-mysql-javascript的正确使用吗?

这是ajax与php-mysql-javascript的正确使用吗?,javascript,php,jquery,sql,ajax,Javascript,Php,Jquery,Sql,Ajax,我是新手,到目前为止我只是使用html表单,点击提交按钮,页面被刷新,数据被发送到服务器mySQL。但我了解到Ajax是开发人员的梦想,他们说,因为您可以: 从web服务器读取数据-页面加载后 在不重新加载网页的情况下更新网页 在后台将数据发送到web服务器 所以我做了一个简单的例子。假设我已经设置了sqlConnection.php 让输入=document.getElementByIdinputField; document.getElementByIdsubmitBtn.addEvent

我是新手,到目前为止我只是使用html表单,点击提交按钮,页面被刷新,数据被发送到服务器mySQL。但我了解到Ajax是开发人员的梦想,他们说,因为您可以:

从web服务器读取数据-页面加载后

在不重新加载网页的情况下更新网页

在后台将数据发送到web服务器

所以我做了一个简单的例子。假设我已经设置了sqlConnection.php

让输入=document.getElementByIdinputField; document.getElementByIdsubmitBtn.addEventListenerclick,函数{ ifinput.value=={ 空字段; }否则{ $document.readyfunction{ $.ajax{ url:'insert.php', 方法:“POST”, 数据类型:“文本”, 数据:{comment:input.value}, 成功:功能{ input.value=; } }; }; } }; 函数选择问题{ 让数据=真; $comments.loadselect.php; } 设置时间间隔,3000个问题; Ajax文本 提交 假设您的代码位于main.js中,您不需要$document.ready,因为在代码的底部,您的代码只会在一切就绪后运行。更不用说它放错地方了

起初我以为你用错了.load,因为它是.on'load'的缩写。但事实证明,在jQuery3.0中,他们添加了一个名为.load的函数。这是愚蠢的,会引起很多混乱,但我离题了,使用或从服务器获取东西

每隔一段时间访问服务器并不一定不好,这叫做轮询,这就是多年来互联网进行全双工通信的方式。当您过于频繁地进行轮询,或者想要更新太多数据,或者有太多用户同时进行轮询时,就会出现问题。多少是太多取决于服务器运行的机器。WebSocket无疑是一个更好的选择,但配置起来要复杂一些

我冒昧地重新编写了一些东西,因为如果您使用jquery,也可以使用jquery

let $input = $('#inputField');

$('#submitBtn').on('click', function(e) {
  e.preventDefault(); //assuming this is in a <form>, default action is to reload the page

  if ($input.val()) {
    $.post('insert.php', { comment: $input.val() })
      .done(function() {
        $input.val('');
      })
      .fail(function(error) {
        //error handling code
      });
  } else {                
    alert("empty field"); //alerts are annoying and thread blocking,
  }                       //maybe use a different method to communicate with the user.
});

setInterval(function() {
  $.get('select.php')
    .done(function(select) {
      //whatever you want to do with the response from this
    })
    .fail(function(error) {
      //error handeling code
    });
}, 3000);

这对服务器有害吗?是的,可能是。它可能需要大量内存、CPU和互联网带宽。如果有太多用户同时这么做,可能会导致服务器崩溃。您可以在insert.php调用完成后调用select.php一次。取决于您是否希望在不刷新页面的情况下查看其他人的插入内容?数据表有多大?每隔几秒钟下载整个表可能会很昂贵。@Kinglish这会将数据库查询从等式中删除,这可能是所有步骤中最优化的步骤,但不会改善带宽溢出或服务器请求/cpuetc@Kinglish更好的是,让AJAX调用只读取文件,因此,无需查找/运行PHP脚本。例如,竞争对手可能会支付相当小的僵尸网络费用,从而非常容易地完全破坏您的站点
<?php
  $conn = new mysqli("configs and what not");
  $statement = $conn->query("SELECT * FROM data");
  $result = $statement->fetch_all(MYSQLI_ASSOC); 

  if (count($result) > 0) {
    echo implode("", array_map(fn($row) => "<p>{$row["question"]}</p>", $result));
  } else {
    echo "No comments";
  }

  $conn->close();