Admin Ajax is returning 0

时间:2013-04-27 作者:Apina

我对jQuery和AJAX尤其陌生。我有一个小问题,返回值总是0,尽管我认为这实际上是成功消息,它没有返回任何内容。

我已经搜索了Google verse,在PHP回调上有die()函数,我相信add\\u操作是正确的。

我在一个本地主机上工作,但我怀疑这会影响它,这都是在管理中,而不是在前端。我还检查了js是否已排队并本地化。

我在chrome开发者区收到一条200 OK的消息。

我还测试了http://codex.wordpress.org/AJAX_in_Plugins 它还返回了0,这让我怀疑它是否不是下面概述的代码。

现在我只是想让它把一些东西发送回jQuery。任何帮助都将不胜感激。

The jQuery

jQuery(document).ready(function(){
    jQuery(\'.cl_link_buttons\').val(\'id\').click(function() {

            var currentid = jQuery(this).attr(\'id\');

            //alert(currentid);
            console.log(currentid);

            jQuery.ajax ( data = {
                action: \'cleanlinks_ajax_get_post_data\',
                url: ajaxurl,
                type: \'POST\',
                dataType: \'text\',
                "currentid" : currentid

            });

            jQuery.post(ajaxurl, data, function(response) {

                var dataz = response;
                alert( dataz );
                console.log (dataz); //show json in console


            });

            return false;

    }); //end click event
}); //end doc ready

The PHP

add_action("wp_ajax_cleanlinks_ajax_get_post_data", "cleanlinks_ajax_get_post_data");
add_action("wp_ajax_nopriv_cleanlinks_ajax_get_post_data", "cleanlinks_ajax_get_post_data");

function cleanlinks_ajax_get_post_data() {

$from_ajax =  $_POST[\'currentid\'];

echo "do" . $from_ajax . "something";

die();


}

15 个回复
最合适的回答,由SO网友:Apina 整理而成

所以我想出来了。这并不是jQuery本身,尽管我已经改进了这一点,而是回调函数的位置。我把它移到了主插件文件中,它成功了。

SO网友:helgatheviking

A.0 响应意味着没有设置动作(在ajax数据中),或者找不到动作的回调函数。

SO网友:Francisco Corrales Morales

你要做的就是添加die();在功能结束时。

请在此处查看原因及更多信息:http://codex.wordpress.org/AJAX_in_Plugins

备注:

你应该echo 执行前的某些内容die. 这将防止服务器错误,并有助于调试

SO网友:Seano

我也有这个问题return 而不是echo 在我的PHP函数中。将其更改为echo 修复了它。

function doAjax() {
    $result = getPosts();
    echo json_encode($result, true);
    die();
}

SO网友:Mcart

我也有同样的问题。解决了这个问题。您必须发送“action”变量,如示例所示:

var dataString = {lat: \'55.56\', lng: \'25.35\', action:\'report_callback\'};
 $.ajax({                            
        url: "http://domain.net/wp-admin/admin-ajax.php",  
        type: "POST",
        //some times you cant try this method for sending action variable
        //action : \'report_callback\',
        data:dataString,        
        success: function(data){ 
            console.log(data);

            },
        error: function() {
            console.log("Error");            
        }
    });
因为在wp-admin/admin-ajax中。php是操作变量的处理程序:

if ( empty( $_REQUEST[\'action\'] ) ) {...}
Line 26

SO网友:Omar Abid

尝试在控制台上运行此代码

jQuery.post(ajaxurl, {action:\'cleanlinks_ajax_get_post_data\'}, function(response) {
     console.log (response);
});
我可以看到您的JavaScript代码有很多地方出错,这可能就是原因。

SO网友:Ngocheng

jQuery(document).ready(function(){
    jQuery(\'.cl_link_buttons\').val(\'id\').click(function() {
       $.ajax({
            type:\'POST\',
            url: ajaxurl,
            data: {
                action : \'ajax_filter\',
                currentid : \'currentid\'
            },
            success: function (result) {
                console.log(result);
                $result = $(result);
                        $result.fadeIn(\'7000\');
                        $("#showresults").html(result);

            },
            error: function (xhr, status) {
                alert("Sorry, there was a problem!");
            },
            complete: function (xhr, status) {
                $(\'#showresults\').slideDown(\'slow\')
            }
            });
     });
}); 
//代码函数php

<?php
    add_action( \'wp_ajax_nopriv_ajax_filter\', \'ajax_filter\' );
    add_action( \'wp_ajax_ajax_filter\', \'ajax_filter\' );
    function ajax_filter(){
        $date = isset($_POST[\'date\']) ? $_POST[\'date\'] : 0;
        echo $date;
        die();
    }
?>

SO网友:RP McMurphy

仅供参考,来自shortcode开发的任何人,如果您通过WordPress Ajax请求得到了正确的响应,但追加了0,那只是因为您是“echo”而不是“return”。短代码绝不意味着“回显”或输出任何内容。只是另一种情况。

SO网友:Yann J

我也有同样的问题,我用wp_die() 在函数结束时echo. 别忘了在脚本上传递你的动作。

当然,请检查您的函数是否必须使用wp_ajax_nopriv 喜欢wp_ajax.

SO网友:Marecky

仅供参考,对于在这里搜索“ajax请求返回0”的任何人:记住,当您将ajax操作添加到对象的方法时,请确保方法访问修饰符为public.

add_action( \'wp_ajax_my_action\', [$object, \'my_method\']);
add_action 如果无法在$object.

SO网友:Alain-Aymerick FRANCOIS

如果不使用wp\\u localize\\u script()函数设置ajax url,admin ajax将返回0。我想是Wordpress的bug。以下是一个示例:

    wp_enqueue_script( \'search_js\', get_template_directory_uri() . \'/js/search.js\', array( \'jquery\' ), null, true );    
    wp_localize_script( \'search_js\', \'ajaxurl\', admin_url( \'admin-ajax.php\' ) );
javascript文件(search.js):

    $(\'#search_input\').autocomplete({
    source: function(request, response) {

        $.ajax({
            type: \'POST\',
            dataType: \'json\',
            url: ajaxurl,
            data: \'action=my_custom_action_search&search_criteria=\' + request.term,
            success: function(data) {
                response(data);
            },
            error: function(errorThrown){
                console.log(errorThrown);
            } 
        });
    },
    minLength: 3
});

SO网友:Savaş Hasçelik

获得错误0的用户:),操作=>“操作”

var data = { \'action\': \'firmabilgilerikaydet\', \'data\': form_data };

$.post(ajaxurl, data, function(response) { alert(response); });

SO网友:Vishnu Sookdeo

如果您使用的是localhost,并且php服务器端代码位于插件文件中,请首先登录到管理仪表板并刷新插件页面。其次,检查插件是否已激活。然后转到前端并刷新,然后再次尝试发送。

SO网友:Ly Van Vu

YOU TRY:

add_action(\'init\', \'ly_form_ajax_init\');


function ly_form_ajax_init() {
    wp_register_script(\'ly-form-ajax-script\', plugins_url().\'/ly-form/js/ly-script.js\' , array(\'jquery\'));
    wp_enqueue_script(\'ly-form-ajax-script\');

    wp_localize_script(\'ly-form-ajax-script\', \'ly_form_ajax_object\', array(
        \'ajaxurl\' => admin_url(\'admin-ajax.php\'),
        \'redirecturl\' => home_url(),
        \'loadingmessage\' => __(\'\')
    ));
}
// Action is: contact_ajax
add_action( \'wp_ajax_contact_ajax\', \'my_function\' );
add_action( \'wp_ajax_nopriv_contact_ajax\', \'my_function\' );

function my_function(){
    ob_clean();
    echo "http://sanvatvungcao.com";
    wp_die();
}

/**
 * Short code in page like this: [ly-form]
 * @param type $atts
 * @param type $content
 * @return string
 */
function ly_form_shortcode($atts, $content = "") {
    echo html_form_code();
}
add_shortcode(\'ly-form\', \'ly_form_shortcode\');

//HTML Form will show,
function html_form_code() {
    $html = "";
    $html.= \'\';
    $html.= \'\';

    $html.= \'        

Họ đệm *

\'; $html.= \'

Tên *

\'; $html.= \'

Địa chỉ *

\'; $html.= \'

Email *

\'; $html.= \'

Nội dung * dg

\'; $html.= \' \'; $html.= \'\'; $html.= \'\'; $html.= \'\'; return $html; } AND HERE js (ly-script.js): ( function( $ ) { $(document).ready(function () { // Perform AJAX form submit $(\'form.ly-form-ex\').on(\'submit\', function(e){ e.preventDefault(); $(\'#loading\').html(\'loading...\'); var dataString = {action:\'contact_ajax\'}; $.ajax({ type: "POST", url: ly_form_ajax_object.ajaxurl, data: dataString, success: function (data) { $(\'#loading\').html(data); }, error: function (errorThrown) { alert(errorThrown); } }); }); }); // end ready } )( jQuery );
希望这对你有帮助,贝斯特

SO网友:xtianity

尝试添加if 声明:

function my_function(){
$id = $_POST[\'variation_id\'];

    if(isset($_POST[\'variation_id\'])) { 


//your coded function


die();
}



}// end function

结束

相关推荐

函数.php文件在AJAX调用期间会被调用吗?调试AJAX

试图找出一个程序员同伴遇到的问题。我想知道functions.php 当您执行管理端AJAX时,是否会调用文件?我知道,当您进行AJAX调用时,会加载WP的一部分来处理调用并返回响应。是functions.php 包含在其中的文件?我之所以这么问,是因为他使用了Meta Box插件中的类,并将其作为主题的一部分加载。该类中有一些AJAX只返回空响应,我认为这是因为处理响应的代码没有加载。WP处理AJAX时会加载什么,是否有任何文档?