【问题标题】:AJAX request returns entire HTML page instead of just the data I wanted it to echoAJAX 请求返回整个 HTML 页面,而不仅仅是我希望它回显的数据
【发布时间】:2021-02-16 20:25:24
【问题描述】:

我有:

索引.php

      <?php
   if(isset($_POST["id"])){
     echo($_POST["id"]);
   }    
       ?>

JavaScript:

 let xhttp = new XMLHttpRequest();
        xhttp.open("POST", "index.php", true);
        xhttp.setRequestHeader('Content-type', 'application/x-www-form-urlencoded')
        xhttp.onreadystatechange = function (){
            if(xhttp.readyState == 4 && xhttp.status == 200)
            {
                let result = xhttp.responseText;
                console.log(result)
            }
        }
        xhttp.send("id=195");

但是控制台会打印 php 页面的整个 HTML 代码。我认为它应该只打印 ID。

【问题讨论】:

  • 执行 JavaScript 时应该在控制台中。它不会出现在网页本身上,因为它不是通过 AJAX 运行的。
  • 对您来说唯一的问题似乎是从您的 Ajax 请求中读取响应。 console.log 打印到浏览器的控制台,而不是页面本身。您了解如何打开浏览器的控制台吗?在大多数浏览器中按 F12。或者,将其更改为 alert(result) 以在弹出窗口中查看。如果您想将响应放回您的页面,然后使用 DOM 函数将其添加到相关位置(我们无法更具体,因为我们不知道您要放置它的位置?
  • 我希望单击按钮向 php 页面发送 post/get 请求,其中包含要删除的 SQL 的 ID 列表。所以post/get必须由php处理?我知道如何打开控制台。
  • @vytasK 您的代码应该已经这样做了。它应该发送 ID,然后回显它。您是说运行此代码时控制台不打印任何内容吗?还是有其他错误?您是否检查过浏览器的网络工具以确保 Ajax 请求确实启动并返回?根据您显示的内容,此代码应该可以工作。现在有点不清楚您的具体问题是什么。
  • @LucasHenrique 据我们所知,OP 没有使用 jQuery,所以这可能会导致更多的混乱而不是帮助。现在不是引入全新库的时候(反正他们不需要,只是为了发出 AJAX 请求)

标签: javascript php ajax


【解决方案1】:

听起来你在 index.php 中还有其他代码,那么?

如果您只希望它打印 ID,请在它回显 ID 之后添加一个 exit(); 命令,以便在这种情况下不处理脚本的其余部分。 (当然,这是假设 PHP 代码位于文件中的 HTML 之前。)


附:大多数开发人员倾向于将响应 Ajax 请求的 PHP 与处理加载 HTML 页面的 PHP 分开。这个

a) 防止您遇到的问题类型,

b) 保持功能干净、清晰和独立,使单元测试更容易,并且

c) 迈出了一步,使其更像是一个成熟的 API,只处理数据 - 如果有用的话,也可以从其他应用程序、服务或前端调用。

【讨论】:

    猜你喜欢
    • 2013-11-30
    • 2013-07-19
    • 2021-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-21
    • 2021-09-28
    • 2020-06-28
    相关资源
    最近更新 更多