当它到达php页面时,是ajax @post为空

时间:2018-06-07 22:28:33

标签: php jquery ajax

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

控制台日志:

  

数据:{" 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);  

1 个答案:

答案 0 :(得分:3)

下面

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进行字符串化的数据。