最简单的AJAX表单不能正常工作

时间:2015-01-10 作者:Thanos

我正在尝试在wp admin区域中创建一个非常基本的ajax调用,表单将在该区域中发送Post ID。该值将用于更新\\u Post\\u meta()。

Simply stuff right? 嗯,我昨天一直在做这个任务,但没有成功。你今天能帮我解决这个问题吗?这样我周六晚上就可以在酒吧喝一品脱酒了?

jQuery:

jQuery(\'#submitform\').submit(ajaxSubmit);

function ajaxSubmit(){

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

    jQuery.ajax({
    type:"POST",
    url: "/wp-admin/admin-ajax.php?action=UpdateMeta",
    data: TheForm,
    success:function(data){
        // Help, what do I do here to make this work?
});

return false;
}
HTML:

<form action="" method="post" id="submitform" />
    <input type="hidden" name="postid" value="<?php echo $post_id; ?>" />
    <button type="send" name="submitbtn" id="submitbtn"></button>
</form>
PHP:

function UpdateMeta(){

    $post_id = $_POST["postid"];

    update_post_meta($post_id, \'helloworld\', $post_id);

    die();
}
add_action(\'wp_ajax_UpdateMeta\', \'UpdateMeta\');
add_action(\'wp_ajax_nopriv_UpdateMeta\', \'UpdateMeta\');

1 个回复
最合适的回答,由SO网友:Christine Cooper 整理而成

我一直在WP-ajax上投入了一些高质量的时间(和令人头疼的事情),所以我知道你是从哪里来的。

老实说,它可能是JS代码中的错误或完全奇怪的东西,例如:

add_action(\'wp_ajax_UpdateMeta\', \'UpdateMeta\');
应更改为:

add_action(\'wp_ajax_updatemeta\', \'UpdateMeta\');
。。。删除大写字母,因为出于某种原因,当我在玩弄添加操作时,它引发了一个问题wp_ajax.

以下内容适用于您,我刚刚在自定义管理页面上对其进行了测试。注意,我在类中添加了一个divfeedback 如果您想返回任何数据进行测试,或将其返回给用户。

html

    <form action="" method="post" id="submitform" />
       <input type="hidden" name="postid" value="<?php echo $post_id; ?>" />
       <input type="hidden" name="action" value="updatemeta" />
       <button type="send" name="submitbtn" id="submitbtn">submit</button>
    </form>
    <div class="feedback"></div>
php

function updatemeta(){

    $post_id = $_POST["postid"];

    update_post_meta($post_id, \'helloworld\', $post_id);

    die();
}
add_action(\'wp_ajax_updatemeta\', \'updatemeta\');
add_action(\'wp_ajax_nopriv_updatemeta\', \'updatemeta\');
JS公司

jQuery(\'#submitform\').submit(ajaxSubmit);

function ajaxSubmit(){

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

    jQuery.ajax({
        type:"POST",
        url: "/wp-admin/admin-ajax.php", // URL to admin-ajax.php
        data: submitform,
        success:function(data){
            jQuery(".feedback").html(data); // empty div to show returned data
        }
    });

    return false;
    }
享受你的啤酒。:)

结束

相关推荐

如何让jQuery在Bootstrap之前加载?

我正在构建引导程序/WordPresssite 我对引导有问题。在jquery之前加载min.js,这会导致导航无法正常工作等问题。下面是我将脚本放入队列的方式。function turtles_scripts() { wp_enqueue_style( \'turtles-bootstrap-min\', get_template_directory_uri() . \'/css/bootstrap.min.css\', array(), null, \'all\' );