我正在尝试统计自定义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>
我不知道我犯了什么错误,谁能帮我?
我无法从搜索表单中获取要在功能中发布的邮政编码值。
提前谢谢。
最合适的回答,由SO网友:Picard 整理而成
我可能(经过一点讨论后)发现了这个问题。
对我来说$postcode
未发送。检查屏幕截图中的“标题”选项卡-会有关于已发送或未发送的POST变量的信息。如果$postcode
如果未发送,则从查询中可能会得到空代码:
SELECT count(*) FROM wp_cdata WHERE code = \'\';
但这并不确定,因为
code
是MySQL
reserved 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.