POST jQuery ajax 请求未传递变量

POST variables not being passed by jQuery ajax request

我已经尝试了几个小时,以便在单击按钮时调用 php 函数。 ajax.php 文件正在打开并且返回正常,但是未传递 post 变量。这是我的 jQuery 代码:

$(function() {
    $("#button-id").click(function() {
        $.post('functions/ajax.php',
          { param1: "value1", param2: "value2" },
          function(data) {
              alert(data);
          }
        );
    });
});

下面的 php 代码会导致显示一个空数组。

<?php
    print_r($_POST);
?>

我一辈子都弄不明白为什么数据变量没有传递到 ajax.php 文件。可能是什么原因造成的?

你应该这样做:

$.post("functions/ajax.php", {
    param1: "value1",
    param2: "value2"
}).done(function (data) {
    alert("Data Loaded: " + data);
});

http://api.jquery.com/jquery.post/(下例)

这对你有帮助。

$.ajax({
    type : "POST",
    url:"<?=Yii::app()->createUrl('site/Enquiryvalidation');?>",
    data:{"param1: "value1", param2: "value2"},
    success:function(data){
alert(data);
}
});

原来问题是由我的 .htaccess 文件引起的。因为我将所有 .php 文件请求重定向到没有 .php 扩展名的各自页面,所以每次打开文件时都会执行一个额外的 get 请求,导致所有先前的 post 变量丢失。

我遇到了同样的问题,原因是我的 .htaccess 删除了 php 文件扩展名。要解决此问题,只需删除请求中的 php 扩展:

$.post('functions/ajax',
    { param1: "value1", param2: "value2" },
    function(data) {
        alert(data);
    }
);