Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 为什么AJAX发布Wordpress不起作用?_Php_Ajax_Wordpress_Frontend_Posting - Fatal编程技术网

Php 为什么AJAX发布Wordpress不起作用?

Php 为什么AJAX发布Wordpress不起作用?,php,ajax,wordpress,frontend,posting,Php,Ajax,Wordpress,Frontend,Posting,我试图在前端通过ajax发布帖子,但总是失败 我做错了什么? 这是我的代码,它返回给我0: HTML 我的_js.js $('#submit').on('click', function(e) { e.preventDefault(); var data = { 'action': MyAjax.action, 'post_title': MyAjax.post_title }; $.post(MyAjax.ajaxurl, data, function(response) {

我试图在前端通过ajax发布帖子,但总是失败

我做错了什么? 这是我的代码,它返回给我0:

HTML

我的_js.js

$('#submit').on('click', function(e) {
e.preventDefault();
var data = { 'action': MyAjax.action, 'post_title': MyAjax.post_title };
    $.post(MyAjax.ajaxurl, data, function(response) {
        alert(response);
    });
});

要检查您是否确实从php中的函数接收到数据,请添加以下内容:

function addpost_ajax_handler() {

    echo 'reached ajax handler'; // delete this line later

    if( 'POST' == $_SERVER['REQUEST_METHOD'] ) {
        $title = $_POST['post_title'];
        $my_post = array(
            'post_title' => $title
        );
        $result = wp_insert_post( $my_post );
        if ( ! is_wp_error( $result ) ) echo 'success';
    }
    die();
}
如果仍然只有0,请尝试确保以可以理解的方式发送操作参数:

data: { action: my_action, datastr: dataString },

另一个可能的麻烦制造者可能是相对url,您应该使用完整的url路径来确保脚本运行,而不管您在哪个页面上。为此,请检查并查看他们如何使用wp_localize_脚本发送正确的管理员url。

您可以先尝试注释插入后的代码,然后只回显“到达的ajax处理程序”,首先验证ajax请求是否成功,然后再逐步添加插入后的代码

除此之外,您还可以添加“其他”部分,例如。 else{echo'失败';}
只是为了验证在创建新帖子时是否存在问题,并返回“失败”作为响应。

多亏了大家,问题解决了。我需要将php处理程序的代码放在functions.php中,而不是一个自定义页面)

首先,您应该验证ajax调用是否到达了您的函数。现在你没有返回任何东西,只是一个
die()在最后,它应该返回0。不如先在函数中回显一些内容。如果没有,请尝试使用对象,而不是包含
操作
参数的序列化数据字符串。@MSTannu,函数应该返回post ID。如果发送数据而不使用Ajaxwp\u insert\u post返回值,但是要把它寄回去,你还需要回显它。@Tannu女士,你能帮我吗?我不明白你的wp\u本地化脚本有点不对劲,试试这个版本:
wp\u本地化脚本('MyAjax-request','MyAjax',array('ajaxurl'=>admin\u-url('admin-ajax.php'),'action'=>myu-action')。请注意,我删除了post_title,因为它还没有设置到那个点。
function addpost_ajax_handler() {

    echo 'reached ajax handler'; // delete this line later

    if( 'POST' == $_SERVER['REQUEST_METHOD'] ) {
        $title = $_POST['post_title'];
        $my_post = array(
            'post_title' => $title
        );
        $result = wp_insert_post( $my_post );
        if ( ! is_wp_error( $result ) ) echo 'success';
    }
    die();
}
data: { action: my_action, datastr: dataString },