【问题标题】:Ajax script printing code instead of actual message? [duplicate]Ajax 脚本打印代码而不是实际消息? [复制]
【发布时间】:2021-06-26 04:25:41
【问题描述】:

我的 HTML 文件中的脚本正在打印 ajax 脚本而不是实际消息。 HTML 脚本:

<script src="{{url_for('static', filename='jquery-3.6.0.min.js')}}"></script>
      <script src="{{ url_for('static', filename='sign_up.js')}}"></script>
      <script>
      $(document).ready(function(){
         $("#p3").keyup(function(){
            var username = $(this).val().trim();
            if(username != ''){
               $.ajax({
                  url: '../static/ajaxfile.php',
                  type: 'GET',
                  data: {username: username},
                  success: function(response){
                      $('#uname_response').html(response);
                   }
               });
            }else{
               $("#uname_response").html("");
            }
          });
       });
      </script>

ajaxfile.php

<?php
include "config.php";

if(isset($_POST['username'])){
   $username = mysqli_real_escape_string($con,$_POST['username']);

   $query = "select count(*) as cntUser from users where username='".$username."'";

   $result = mysqli_query($con,$query);
   if(mysqli_num_rows($result)){
      $row = mysqli_fetch_array($result);

      $count = $row['cntUser'];

      if($count > 0){
          $response = "<span style='color: red;'>Not Available.</span>";
      }else{
        $response = "<span style='color: green'>Available.</span>";
      }

   }

   echo $response;
   die;
}
?>

网页上的输出是"0){ $response = "Not Available."; }else{ $response = "Available."; } } }"在用户名文本框下。用户名文本框的 id 为“用户名”,我检查了终端,它使用用户名数据查询 ajaxscript.php 文件,但得到的响应不正确。

【问题讨论】:

  • 您的服务器上似乎没有运行 PHP,您的 Web 服务器要么不支持它,要么配置错误。请描述您的网络服务器环境。实际上,您得到的是 full 代码(它只是被视为常规文件并返回其内容),正如您在浏览器 devtools 的网络选项卡上看到的那样,您只看到一部分的原因是因为从&lt;?phpif ($count) &gt;(您碰巧有&gt;)的整个部分都被解释为HTML 标记。
  • ... 实际上,我刚刚意识到您正在尝试执行位于名为 static 的文件夹中的 PHP 文件,听起来它应该包含 static 文件,而不是动态的代码,所以可能你的框架故意不在那里执行 PHP(它甚至可能被优化为直接由反向代理甚至 CDN 提供服务)。将 PHP 文件放在 static 文件夹之外的项目中的其他 PHP 文件旁边,看看是否有帮助。
  • ... 实际上,现在我认为您展示的模板看起来像是一个 Flask 应用程序,它甚至不是 PHP,而是 Python...也许你有什么东西混在一起?我的直觉告诉我你看了一篇关于 AJAX 的糟糕教程,它假设全世界都在使用 PHP,你试图将它应用到用 Python 编写的应用程序中,但这是行不通的。
  • 如果您使用flaskpython 为什么要使用php?我自己不在 python 上工作,但你不能在python 中创建一个函数的路由来为你完成任务。 Ajax 不仅限于调用 php。它只是处理对您要求的 url 的 get 或 post 请求。 ajax(适用于 JS)不知道您在后端做什么以及如何做,并且是客户端。
  • 由于您的应用程序是基于 python 的烧瓶应用程序,因此您还需要用 python 而不是 PHP 编写响应您的 Ajax 请求的服务器代码。正如您所发现的,使用两种不同的服务器端语言没有任何意义,而且效果不佳。此外,这意味着代码无法与您现有应用程序已经提供的任何其他服务和库集成

标签: javascript php html jquery ajax


【解决方案1】:

您发送 GET 请求,但在服务器端您正在检查 POST 用户名,可能无法解决所提出的问题,但距离更近了一步

【讨论】:

  • 我之前有“POST”,但它说方法不允许。我只是把 ajaxfile.php 中的方法改成 _GET 还是一样的错误。
  • @Roark 这只是摆弄。找出post is not allowed 的原因并使用 POST
  • 如果用一些硬编码值替换 if else 块,输出是什么
  • 它只是打印那个硬编码的值。我认为问题在于我将 php 与 Flask 结合使用,这是行不通的。我之前没有意识到这一点,所以我将尝试通过 python 中的 render_template() 函数将数据库中的用户名列表传递到 html 页面,然后使用 html 中的脚本来检查那里。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-02
  • 2011-05-05
  • 2018-03-05
  • 1970-01-01
  • 2014-06-20
相关资源
最近更新 更多