【问题标题】:AJAX POST request does not work properly along with .htaccess redirect ruleAJAX POST 请求无法与 .htaccess 重定向规则一起正常工作
【发布时间】:2020-09-09 08:07:20
【问题描述】:

这是我的 .htaccess 文件。可以看出,一切都是通过 index.php 重定向的。

<IfModule mod_rewrite.c>
  Options -Multiviews
  RewriteEngine On
  RewriteBase /project_name/public
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteRule  ^(.+)$ index.php?url=$1 [QSA,L]
</IfModule>

现在这是一个文件 (viewname.php),位于我的一个视图文件夹中(这是一个 MVC 样式的项目)。可以看出,我正在向与 index.php 位于同一文件夹中的文件 ajax.php 发出 AJAX POST 请求(即,文件夹 public)。请注意,我没有将 url 写为“../something”,因为我正在通过 index.php 重定向所有内容。我通过在此文件中写入&lt;?php echo __FILE__;?&gt; 确认了这一点,该文件返回了结果 index.php。如果 AJAX 请求成功,我应该在 id 为“r”的 div 中将输出作为“工作”。但这不会发生。此外,我在控制台中没有收到类似 jquery.min.js:4 POST http://127.0.0.1/project_name/public/file_name.php 404 (Not Found) 的任何错误,我曾经在没有该 .htaccess 文件的项目中遇到这种错误。当我console.log(data) 时,我在控制台中看到 index.php 文件中的 HTML 代码,在本例中是 Bootstrap 和 JQuery 的 CDN。我应该对我的 AJAX 代码或 .htaccess 文件进行哪些更改?

<div id="r"></div>

//JQuery AJAX
$(document).ready(function(){
 $.ajax({
  url: "ajax.php",
  method: "POST",
  data: {
   valid: "yes"
  },
  success: function(data){
  $("div#r").html(data);
  }
 });
});

这是 ajax.php 文件中的代码:

<?php
if(isset($_POST['valid'])){
 if($_POST['valid']=='yes'){
  echo 'Working';
 }
}

【问题讨论】:

  • 当您发出 AJAX 请求时,您实际上 上的 URL 是什么? (这听起来像是典型的新手问题,即不知道相对 URL 是如何工作的,tbh。)
  • 其实我以前用的url:“ajax.php”,后来改成了“127.0.0.1/project_name/ajax.php”,现在一切正常。顺便问一下@CBroe,你有什么链接可以解决我的 URL 问题吗?有很多吗??

标签: php ajax .htaccess


【解决方案1】:

你在 ()(圆括号)之后缺少函数

$(document).ready(function(){
         $.ajax({
          url: "test1.php",
          method: "POST",
          data: {
           valid: "yes"
          },
          success: function(data){
          $("div#r").html(data);
          }
         });
    });

【讨论】:

    【解决方案2】:

    在这种情况下,AJAX 完全可以工作,但唯一的区别是 ajax 无法对您的网页产生影响,例如回显、调用函数等。

    【讨论】:

    • 您所说的任何解决方案?
    • 您可以将页面url中的值传递给另一个。
    • 你能详细说明一下吗??
    • 我的意思是说你可以使用&lt;form&gt; action ="" &lt;/form&gt;发送数据,它会给你想要的结果。
    • 那么,如果我使用
      ,那么使用 AJAX 的目的是什么?
    【解决方案3】:

    我将网址从“ajax.php”更改为“http://127.0.0.1/project_name/ajax.php”,现在一切正常。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-08
      • 2013-11-04
      相关资源
      最近更新 更多