javascript - 使用 php 从 ajax 检索发布的数据

标签 javascript php jquery ajax

我在从 ajax 调用检索发布的数据时遇到问题,不确定出了什么问题。下面脚本的控制台输出显示了 ajax 调用之前的所有内容,但数据在连接器中不可用

   function updateOptions(data){

        console.log(data);
        console.log(data.id);
        console.log(data.action);

        var data = {id: data.id, action : data.action};

        console.log(data);

        $.ajax({

            type: 'POST',
            url: 'ajax.connector.php?action=updateOptions',
            data: JSON.stringify(data),
            cache: false,
            dataType  : "json",

            success: function(data, status) {

                if(data.status == 'success'){

                console.log('success');
                console.log(data);

                }else if(data.status == 'error'){
                    console.log('selects not updated');
                }

            },

            error: function(data){
                console.log('an error has occurred');
            },

        });

    }

因此,前 4 个 console.log 条目正确显示数据,成功条件下的第一个 console.log 正确显示。第二个,显示:

Object {status: "success", msg: "Category added successfully", id: null, action: null, post: Array[0]}

连接器[更像是导演]

   case 'updateOptions':
        error_log('Running updateOptions function ' . print_r($_POST, TRUE), 0);
        $output = $sbb->updateOptions($_POST);
        break;

记录这个:

Running updateOptions function Array\n(\n)\n,

如果我尝试将 $_POST['action'] 或 $_POST['data'] 或其他内容回显到日志中,我会得到一个 undefined index 。

我强制 ajax 调用在 php case 函数正在调用的类中返回成功:

public function updateOptions($data){

        $output = array(
            'status' => 'success',
            'msg' => 'Category added successfully',
            'id' => $data['id'],
            'action' => $data['action'],
            'post' => $data,
        );

        return $output;

}

所以ajax调用本身确实有效,只是数据没有被传递。

不知何故,我没有从ajax帖子中获取[或正确检索]数据。

这里有什么问题吗?

最佳答案

您正在发布 JSON,$_POST 填充有键=值对,请勿将 JSON 与 application/x-www-form-urlencodedmultipart/form- 混淆data (这是 php 用于填充 $_POST 的内容。
要使用 jQuery.ajax 发送 application/x-www-form-urlencoded 数据,请传递一个将数据作为数据参数的对象

data: data, // removed JSON.stringify

关于javascript - 使用 php 从 ajax 检索发布的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28071642/

相关文章:

javascript - 在 iframe 中创建自定义元素

javascript - iOS UIWebView - 自动点击 FORM 按钮..如何实现?

javascript - post方法不发送全文

jquery - 双倍的 POST 请求而不是单一的

javascript - 初始化 HandsOntable 时摆脱 TypeError

javascript - 如何在 VueJS 中使类的 "virtual"getter 响应式

php - 比较 MySQL 数据库中的日期

PHP + JavaScript 倒计时回显 5 秒/1 秒

javascript - jQuery 什么时候在浏览器中执行但不在移动设备上执行?

jquery - 添加成功/失败的验证图像