使用从HTML表单返回的数据创建帖子

时间:2013-09-30 作者:Gathris

我正试图写一个WordPress插件,我遇到了一个麻烦。

The Background: 我在使用的mySQL数据库中有一些数据(每一行都有一个唯一的ID和我添加的一些其他信息)。我可以使用

$heads = $wpdb->get_results("SELECT * FROM {$wpdb->prefix}costumesdb WHERE location = \'head\'", ARRAY_A);
并使用表单向用户显示一些信息(这是5个不同下拉列表中的一个,但它们都是以相同的方式创建的)

<form id="createacostume" action= "admin-ajax.php" method="post">
Head: <select name="head">
<?php foreach ($heads as $head) { ?>
        <option value="<?php echo $head[\'id\'] ?>"><?php echo $head[\'shopName\'] . " - " . $head[\'pieceName\'] ?></option>
<?php } ?>
</select>
<input type="submit">
将表单数据提交到服务器的脚本为:

<script type=\'text/javascript\'>
    jQuery.ajax({
type: "POST",
url: ajax_url,
data: { action: \'my_action\' , param: \'st1\' }
}).done(function( msg ) {
     alert( "Data Saved: " + msg.response );
});
</script>
在我的php文件中,服务器端是:

add_action(\'wp_ajax_my_action\', \'my_ajax_action_function\');
function my_ajax_action_function(){

$reponse = array();
if(!empty($_POST[\'param\'])){
     $response[\'response\'] = "I\'ve get the param a its value is ".$_POST[\'param\'].\' and the plugin url is \'.plugins_url();
} else {
     $response[\'response\'] = "You didn\'t send the param";
}

header( "Content-Type: application/json" );
echo json_encode($response);

exit();
The Problem: 如果我在表单中设置action=“admin ajax.php”,我将引导到admin ajax。带有“0”响应的php页面。

如何从WordPress管理页面的表单中获取数据并进行处理?

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

我解决了这个问题并重新编写了代码:

jQuery(document).ready(function() {
    jQuery(\'#createacostume\').submit(function( event ) {
        event.preventDefault();

        var aForm = jQuery(this);
        var bForm = aForm.serializeArray();
        bForm.push({name: \'action\', value: \'myAjaxFunction\'});
        jQuery.ajax({
            url: ajaxurl,
            type: "POST",
            data: bForm,

            success: function(resp) {

                alert("Thank you for your post. We will review it and approve it shortly" + resp);

            },
            error: function( req, status, err ) {
                alert( \'something went wrong, Status: \' + status + \' and error: \' + err );
            }
        })

                .fail(function() {
            alert("error");
        })
        ;
        return false;
    });
});
您必须将要调用的ajax函数推到表单上。

结束

相关推荐

我无法访问$wpdb

我正在开发一些附加功能,包括jQuery自动完成表单、一些自定义数据库表和用于查询表的PHP。我让它在WordPress框架之外工作,使用mysqli作为数据库部分。我已经将表单添加到WordPress页面(并将jQuery引用添加到标题)。当我运行Firefox Web Developer Web控制台时,我可以看到jQuery正在完成它的工作,直到调用PHP脚本为止。我的PHP脚本位于Genesis子主题的根目录中。PHP脚本就挂在那里,我似乎无法访问中的信息$wpdb. 我在与测试相同的目录中执行