1

ユーザーデータをデータベースに挿入および取得する必要があるWebサイトに取り組んでいます。データを取得できるカスタム テンプレートを作成しましたが、挿入しようとすると、「オブジェクト オブジェクト」というエラー メッセージが表示された警告ボックスが表示されます。

カスタマイズされたテンプレート コードは次のとおりです。

<?php
/*
Template Name: Customers
*/
get_header(); ?>

    <div id="primary">
        <div id="content" role="main">

            <?php while ( have_posts() ) : the_post(); ?>

                <?php get_template_part( 'content', 'page' ); ?>

                <?php 

                if (is_user_logged_in()):?>

                    <form type="post" action="" id="newCustomerForm">

                        <label for="name">Name:</label>
                        <input name="name" type="text" />

                        <label for="email">Email:</label>
                        <input name="email" type="text" />

                        <label for="phone">Phone:</label>
                        <input name="phone" type="text" />

                        <label for="address">Address:</label>
                        <input name="address" type="text" />

                        <input type="hidden" name="action" value="addCustomer"/>
                        <input type="submit">
                    </form>
                    <br/><br/>
                    <div id="feedback"></div>
                    <br/><br/>


                <?php 
                    global $wpdb;
                    $customers = $wpdb->get_results("SELECT * FROM customers;");

                    echo "<table>";
                    foreach($customers as $customer){
                        echo "<tr>";
                        echo "<td>".$customer->name."</td>";
                        echo "<td>".$customer->email."</td>";
                        echo "<td>".$customer->phone."</td>";
                        echo "<td>".$customer->address."</td>";
                        echo "</tr>";
                    }
                    echo "</table>";
                else:
                    echo "Sorry, only registered users can view this information";
                endif;                      

                ?>

                <script type="text/javascript">
                    jQuery('#newCustomerForm').submit(ajaxSubmit); 

                    function ajaxSubmit(){

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

                        jQuery.ajax({
                            type:"POST",
                            url: "/wp-admin/admin-ajax.php",
                            data: newCustomerForm,
                            success:function(data){
                                jQuery("#feedback").html(data);
                            },
                            error: function(errorThrown){
                                alert(errorThrown);
                            }   
                        });

                        return false;
                    }
                </script>



            <?php endwhile; // end of the loop. ?>

        </div><!-- #content -->
    </div><!-- #primary -->

functions.php に次のコードを追加しました。

/*
Following function recieves data from the user
*/
wp_enqueue_script('jquery');

function addCustomer(){

global $wpdb;

$name = $_POST['name'];
$phone = $_POST['phone'];
$email = $_POST['email'];
$address = $_POST['address'];

if($wpdb->insert('customers',array(
    'name'=>$name,
    'email'=>$email,
    'address'=>$address,
    'phone'=>$phone
    ))===FALSE){

    echo "Error";

}
else {
        echo "Customer '".$name. "' successfully added, row ID is ".$wpdb->insert_id;

    }
die();  
}
add_action('wp_ajax_addCustomer', 'addCustomer');
add_action('wp_ajax_nopriv_addCustomer', 'addCustomer');

前もって感謝します。

4

1 に答える 1

0

あなたの関数に、あなたが使用して登録した、つまり、これが例である、呼び出されるべきであるajaxインクルード/センドを含まなかったactionadd_actionaddCustomer

var newCustomerForm = jQuery(this).serialize();
jQuery.ajax({
    type:"POST",
    url: "/wp-admin/admin-ajax.php",
    data: newCustomerForm + '&action=' + addCustomer, // <==
    success:function(data){
        jQuery("#feedback").html(data);
    },
    error: function(errorThrown){
        alert(errorThrown);
    }   
});
于 2013-02-22T18:00:32.220 に答える