AJAX不将表单数据发布到PHP函数中的查询

时间:2017-05-10 作者:Man in black

我正在尝试统计自定义wordpress数据库中的数据。Mysql查询工作正常,因为我已经直接使用默认值进行了测试,但当从表单向ajax发送数据时,它不会为查询发送php中的数据。

这是我的函数代码。php:

function searchdata() {
     $postcode = $_POST[\'$postcode\'];
            global $wpdb;
            $resultdyn =  $wpdb->get_var( "SELECT count(*) FROM wp_cdata WHERE code = \'$postcode\'" );
            echo "<p>Result: {$resultdyn}</p>";
            echo "Search Results for: $postcode";
            exit();
}
add_action( \'wp_ajax_nopriv_searchdata\', \'searchdata\');
add_action( \'wp_ajax_searchdata\', \'searchdata\' );

function add_myjavascript(){  
    wp_register_script( \'globals\', get_stylesheet_directory_uri() . "/js/search.js", array( \'jquery\' ) ); 
    wp_enqueue_script( \'globals\' );
    wp_localize_script( \'globals\', \'yes\', array( \'ajaxurl\' => admin_url( \'../../wp-admin/admin-ajax.php\' ) ) );
}  
add_action( \'init\', \'add_myjavascript\' );
这是我的jquery搜索。js代码:

jQuery(document).ready(function() {      
    jQuery("#mysearchform").submit(function(e){
         e.preventDefault();      
                 var sentdata = jQuery(this).serialize();
  // var dataString = \'postcode=\'+ postcode;
             $(\'div.cart\').append(\'<span class="loading">LOADING</span>\');
        jQuery.post(yes.ajaxurl, {action : \'searchdata\'}, {postcode:$("#postcode").val()},
            function( response) {
                  jQuery("#searchresult").html(response);
                $(\'span.loading\').remove();
                return false;
            } 
        );
    }); 
}); 
我的搜索表单代码:

<form action="" id="mysearchform" method="post">
<div><input name="postcode" id="postcode" size="200" type="text" value="" placeholder="Postcode here *" />
<input id="myformsubmit" name="Submit" type="submit" value="Search" /></div>
</form>
<div id="searchresult"></div>
我不知道我犯了什么错误,谁能帮我?

我无法从搜索表单中获取要在功能中发布的邮政编码值。

提前谢谢。

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

我可能(经过一点讨论后)发现了这个问题。

对我来说$postcode 未发送。检查屏幕截图中的“标题”选项卡-会有关于已发送或未发送的POST变量的信息。如果$postcode 如果未发送,则从查询中可能会得到空代码:

SELECT count(*) FROM wp_cdata WHERE code = \'\';
但这并不确定,因为code 是MySQLreserved word 这应该通过反勾号来避免,所以你可以尝试改变这一点,但我认为这不会有帮助。

我认为主要的问题是jQuery。我认为应该是这样的帖子格式(注意包含参数的大括号):

jQuery.post(
   yes.ajaxurl, 
   {action: \'searchdata\', postcode: $("#postcode").val()},
   function(response) {
       jQuery("#searchresult").html(response);
       $(\'span.loading\').remove();
       return false;
   } 
);
您可以检查possible post call formats.

结束

相关推荐

WP_AJAX未调用该操作

我正在开发一个Ajax不起作用的插件。我正在使用以下代码:add_action( \'wp_ajax_cpm_add_update\', array( $this, \'edit_added_people\' ) ); Theedit_added_people() 调用操作后未调用函数cpm_add_update, 这可能是什么原因?以下是我的表单代码:function cpm_add_people_form( $project_id, $people = null ) {