页面模板中返回0的AJAX调用

时间:2021-09-27 作者:raja arab

我尝试在我的子主题中添加自定义表单。我已经阅读了此问题的所有文档,但仍然返回0,这是我的代码

作用php(子主题)

function my_custom_scripts() {
  wp_enqueue_script( \'custom-js\', get_stylesheet_directory_uri() . \'/assets/js/custom-child.js\', array( \'jquery\' ),\'\',true );

  //the_ajax_script will use to print admin-ajaxurl in custom ajax.js
  wp_localize_script(\'custom-js\', \'the_ajax_script\', array(\'ajaxurl\' =>admin_url(\'admin-ajax.php\')));
} 

add_action( \'wp_enqueue_scripts\', \'my_custom_scripts\' );
add_action( \'wp_ajax_callbackcity\', \'callbackcity\' );
add_action( \'wp_ajax_nopriv_callbackcity\', \'callbackcity\' );

function callbackcity() {
  extract($_POST);

  $data = \'tes city - \'.$svalue;
  return $data;
  wp_die();
  //die();
}
自定义子项。js公司

jQuery("#get_city").on("change", function (e) { 
        
        e.preventDefault(); 
        jQuery.ajax({
            type: \'POST\',
            dataType: \'json\',
            url: the_ajax_script.ajaxurl,
            data: {
                \'action\': \'callbackcity\',
                \'svalue\': 12
            },
            success: function(data) {
                console.log(data);
            },
            error: function() {
                console.log(\'ERROR\');
            }
        });
    });
有人能告诉我我的代码出了什么问题吗?

1 个回复
SO网友:Tom J Nowell

三大问题:

  • extract, 是危险的,会带来重大安全问题。这也是完全没有必要的return 而不是wp_die, 你应该回显输出,然后退出/退出。如果没有,那么WP将继续处理AJAX请求,假设没有找到处理程序,然后打印0admin-ajax.php 不是为使用该数据类型而构建的,需要复杂的解决方法,请考虑改用更新的现代REST API处理程序。它将为您提供人类可读的消息,工作更接近您的预期,有一个漂亮的URL,例如。/wp-json/raja/v1/callbackcity, 并支持JSON数据类型请求。

相关推荐

代码在cronjob上运行较快,但在do_action或ajax调用中运行较慢。

我从csv创建了几篇文章,当我使用cronjob执行代码时,操作会持续大约7分钟,但是如果我直接在模板中使用代码,或者调用do\\u action或通过ajax执行代码,则需要30分钟以上,有时甚至无法完成(生成时间限制错误)。有人知道会发生什么吗?对于帖子的创建,我使用wp\\u insert\\u post、update\\u post\\u meta和wp\\u set\\u object\\u terms。创建时,创建的帖子总数为6544篇WITHOUT 在失败之前,cronjob通常只创建300