【问题标题】:WordPress plugin with Ajax post returns an empty array带有 Ajax 帖子的 WordPress 插件返回一个空数组
【发布时间】:2022-01-05 23:41:38
【问题描述】:

我知道有很多问题要问,但也许有人可以快速查看这个废弃的 WordPress 插件的文件,它不能正常工作。 Ajax 发布数据导致一个空数组,因此脚本因错误而终止。我猜 WordPress 中的某些东西发生了变化,这使得这个脚本现在失败了。我发现Ajax 调用Action

mbh_save_bounce_settings

正在发布到检查数据的函数

if(isset($_POST['data']['bounce']) && is_array($_POST['data']['bounce'])){

上述语句不正确,因为数组$_POST['data']['bounce']) 为空,因此以“else”部分的自定义错误结尾。来自 ajax 调用的数据本身

'data': settings_data,

正在控制台日志中工作。但它没有进入 if 语句。 控制台中没有显示错误。不在 PHP 日志中,也不在 DEV 控制台中。

这是文件:

https://plugins.trac.wordpress.org/browser/bounce-handler-mailpoet/trunk/includes/class-mailpoet-bounce-handler.php

【问题讨论】:

  • “以错误结尾”。什么样的错误?在php 方面?还是在浏览器的控制台中?您可以在问题中包含错误吗?
  • if(isset($_POST['data']['bounce']) && is_array($_POST['data']['bounce'])){ 的“else”部分中显示的自定义错误,因为此声明不正确。 $_POST['data']['bounce'] 未在 ajax 发布后设置。
  • 我想知道为什么它使用var settings_data = $(this).serializeObject(); - 这似乎不是核心 jQuery 函数,但是这个插件,plugins.jquery.com/serializeObject - 并将表单数据序列化为 JSON。 PHP 不会为 JSON 输入填充 $_POST。
  • 嗯,我是初学者,所以我不能说。但是在开发控制台中检查 xhr 有效负载后,我看到它显示为 data[bounce[hostname]]: - 那么这是通过 isset($_POST['data']['bounce']) 调用检查的正确方法吗?

标签: php jquery ajax wordpress plugins


【解决方案1】:

好的,我刚刚通过搜索每个类似的主题找到了解决方法。

其实这个帖子回答了:AJAX form posting to PHP script but $_POST is empty in PHP script

确实是PHP/JSON解析的问题。

我删除了这一行

header('Content-Type: application/json');

在接收 Ajax 数据的函数中,现在它正在工作!

【讨论】:

    猜你喜欢
    • 2018-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-31
    • 2014-10-13
    • 2015-09-06
    • 2017-01-10
    • 1970-01-01
    相关资源
    最近更新 更多