php - 为什么ajax @post到达php页面时为空

标签 php jquery ajax

我有以下代码,我尝试使用 ajax/json 将值发布到 php 文件。 php 文件抛出警告:未定义索引:companyid、未定义索引:companyname、未定义索引:calendar_eventStart、未定义索引:calendar_eventEnd。 我意识到使用 ajax 发布的变量在服务器端获取时是空的,但我不知道我做错了什么。这是我的代码:

控制台日志:

Data: {"companyid":1,"companyname":"Fifteen AS","calendar_eventStart":"2018-06-06T22:00:00.000Z","calendar_eventEnd":"2018-06-06T22:00:00.000Z"}

jQuery:

var formData = {
                    companyid,
                    companyname,
                    calendar_eventStart,
                    calendar_eventEnd
                };
                formData = (JSON.stringify(formData));
                console.log('Data: ' + formData);                   
                $.ajax({
                url: "create_calendar_event.php",
                type: "post",
                dataType: "json",   
                data:{data: formData},                   
                success: function(response) {
                alert(response);                
                }               
                });

PHP:

var_dump($_POST['companyid']);
var_dump($_POST['companyname']);
var_dump($_POST['calendar_eventStart']);
var_dump($_POST['calendar_eventEnd']);
$event_status = 'Success';
echo json_encode($event_status,JSON_UNESCAPED_UNICODE|JSON_UNESCAPED_SLASHES);  

最佳答案

这里

data:{data: formData},

您正在创建一个子对象,因此实际数据可以在

中找到
$_POST['data']['companyid'] // etc

如果您没有首先JSON.stringify(formData)。如果保留 stringify $_POST['data'] 将仅包含包含数据的字符串。解决这个问题需要 php 中的另一个魔法。所以只需删除这里的 stringify 即可。

但是您不需要额外的“数据”对象。你可以这样做

$.ajax({
      url: "create_calendar_event.php",
      type: "post",
      dataType: "json",   
      data: formData, 
      success: function(response) {
           alert(response);                
      }               
});

JSON.stringify() 的最后说明:除了通过 URI(GET 请求)发送需要字符串化 jsObject 的数据之外,我想不出其他情况。

关于php - 为什么ajax @post到达php页面时为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50750973/

相关文章:

php - 使用 MySQLi 设置字符集

jquery - csrf 与 ajax 和 django post

JQuery Datatables 和 ColdFusion - 如何获取该格式的数组源数据?

php - 将 AV 扫描添加到文件上传站点

php - 无法让 xdebug 发回信息 : PhpStorm+xdebug+ec2-linux

php - laravel 中返​​回的时间不正确

php - 按字段分组在 MongoDB 中不起作用

javascript - jQuery(移动)不触发 Phonegap 应用程序上的 .change 事件

javascript - 在 AngularJS 中观察对象

javascript - jquery - ajax 请求不工作