wordpress中的管理员ajax无效

时间:2017-07-03 05:11:18

标签: ajax wordpress

我正在使用管理员ajax,但它无法正常工作。请帮助我找出问题所在。这是jquery代码

jQuery(document).ready(function($) {

    jQuery('#newPostsForm').submit(ajaxSubmit);

    function ajaxSubmit(){

    var newPostsForm = jQuery(this).serialize();

    jQuery.ajax({
    type:"POST",
    url: "<?php echo admin_url('admin-ajax.php'); ?>",
    data: newPostsForm,
    success:function(data){
    jQuery("#feedback").html(data);
    }
    });

    return false;
    }
}):

如果我提醒var&#34; newPostsForm&#34; ,它显示了发布的值。但它现在正在进行ajax。这是我正在使用的

<form type="post" action="" id="newPostsForm">    
    <input type="hidden" name="action" value="addPosts"/>
<!-- input fields -->
</form>

这是我正在使用的WordPress功能。这个功能是另一个文件。 HTML和javascript在同一个文件中

function addPosts(){

echo "<pre>";
print_r($_POST);


die();
}



add_action('wp_ajax_addPosts', 'addPosts');
add_action('wp_ajax_nopriv_addPosts', 'addPosts'); // not really needed

2 个答案:

答案 0 :(得分:0)

检查脚本是否在发送到客户端之前由PHP处理。将代码更改为类似于此的内容:

jQuery(document).ready(function($) {

    jQuery('#newPostsForm').submit(ajaxSubmit);

    function ajaxSubmit() {
        var newPostsForm = jQuery(this).serialize();
        var url = "<?php echo admin_url('admin-ajax.php'); ?>";
        alert("Submitting to URL: " + url);
        jQuery.ajax({
            type:"POST",
            url: url,
            data: newPostsForm,
            success:function(data){
                jQuery("#feedback").html(data);
            },
            error: function (xhr, status, err) {
                alert("Got status " + status + " and error: " + err);
            }
        });
        return false;
    }
});

如果您获得了https://mysite.example.org这样的实际网址,请检查该网址是否有效。如果你得到<?php echo admin_url('admin-ajax.php'); ?>那么你的代码没有被PHP处理,并且AJAX调用将因为你没有使用有效的URL而失败。

答案 1 :(得分:0)

问题似乎是JS代码中无法访问AJAX URL。如果JS代码写入PHP页面,那么只有代码才能工作。因为PHP代码不能执行到JS文件中。

现在解决方案是本地化JS文件。请按照代码。

wp_localize_script( 'handle', 'settings', array('ajaxurl' => admin_url( 'admin-ajax.php' )));

将上面的代码写入您已将js文件排入队列的位置。 现在在JS文件中:

    jQuery.ajax({
       type:"POST",
       **url: settings.ajaxurl,**
       data: newPostsForm,
       success:function(data){
          jQuery("#feedback").html(data);
       }
    });

希望它可以根据您的选择工作。