Wp_admin ajax 请求返回响应“0”

问题描述 投票:0回答:2

我是编码新手,并试图通过实践来学习东西。

目前,我正在尝试使用 wordpress 做一些非常简单的事情。我正在尝试使用一些外部数据在 WordPress 中创建一些帖子。

我可以使用 CURL 获取数据。没问题,直接使用 Wp_insert_post 发布。

但是,我想要做的是通过单击管理面板中的按钮来触发 wp_insert_post 函数(我已将其创建为插件和单独的插件仪表板,其中嵌入了按钮)。我一直在摆弄代码,并将数据发送到 wp-admin-ajax.php 工作正常,并给出响应代码 200 。但是,接收的响应是 "0" 。如果传递的数据正确,我认为响应应该是“1”?

我现在有以下代码。

//Button

<form id="formtesting">
<input type="text" id="name" placeholder="Name">
<input type="submit" id="user-submit" value="user-submit">

//Ajax Call

$(document).ready(function() {
  var userSubmitButton = document.getElementById('user-submit');

  var adminAjaxRequest = function(formData, myaction) {
    $.ajax({
      type: 'POST',
      dataType: 'json',
      url: '/wpdevelopment/wp-admin/admin-ajax.php',
      data: {
        action: myaction,
        data: formData
      },
      success: function(response) {
        if (true === response.success) {
          alert('success');
        } else {
          alert(response);
        }
      }
    });
  };

  userSubmitButton.addEventListener('click', function(event) {
    event.preventDefault();
    var formData = {
      'name': document.getElementById('name').value

    };
    adminAjaxRequest(formData, 'data_submission');
  });
});

这是我的测试函数 // 为了测试函数是否正确启动,我尝试发送一个 Json 错误,这样我就可以包含 wp_insert_post 详细信息。

function data_submission(){


wp_send_json_error( 'I am an error' );}
add_action( 'wp_ajax_data_submission', 'data_submission' );
add_action( 'wp_ajax_nopriv_data_submission', 'data_submission' );

无法定位故障所在。会提供一些帮助

谢谢

javascript php jquery ajax wordpress
2个回答
1
投票

使用 add_action('wp_ajax_myaction', 'yours_callback_fanc');

wp_ajax_ 其余部分是您的操作名称,它定义在您的 ajax 调用中。就你而言,这是我的行为。


0
投票

首先这不是在 wordpress 中使用 ajax 的标准方法, 使用 wp_localize_script 嵌入全局 ajax_url 变量,

 wp_register_script('plugin-ajaxJs', plugins_url('/js/ajax-call.js', __FILE__));
 wp_enqueue_script('plugin-ajaxJs');
 wp_localize_script('plugin-ajaxJs', 'my_ajax_url', array('ajax_url' => admin_url('admin-ajax.php')));

现在作为ajax中的url,您可以添加my_ajax_url.ajax_url, 这将向 admin-ajax.php 发送请求。

现在回答你的问题 你返回一个 wp_json_error 所以结果是 0, 使用它并在ajax成功时返回你想要的任何数据,

$response = array();
$response['result'] = 1;
wp_send_json($response);
© www.soinside.com 2019 - 2024. All rights reserved.