我使用的是wordpress ajax,下面的代码没有传递参数值metakey: id
到$_POST["metakey"]
. 所以var_dump($_POST)
显示array(0) { }
和$_REQUEST
显示array()
如果我在PHP函数中输入变量的静态值$key=<any meta
key>
那就好了
jQuery(".selectbox").change(function(){
var id = this.id;
// do a POST ajax call
$.ajax({
type: "POST",
url: \'<?php echo admin_url(\'admin-ajax.php\'); ?>\',
data: ({
action: "get-mata-value",
metakey: id
}),
success: function( response ) {
jQuery.each(response ,function(index,value){
jQuery(\'#\' +id).append(\'<option value="\'+value+\'">\'+value+\'</option>\');
});
}
});
});
PHP:
add_action("wp_ajax_get-mata-value", "get_mata_value");
add_action("wp_ajax_nopriv_get-mata-value", "get_mata_value");
function get_mata_value()
{
global $wpdb;
$key=$_POST["metakey"];
$result=
$wpdb->get_col( $wpdb->prepare(
"
SELECT DISTINCT meta_value
FROM $wpdb->postmeta
WHERE meta_key = %s
",
$key
) );
return($result);
exit();
}
编辑:
在chrome developer tool下我看到了
jquery。js?ver=1.12.4:4 XHR完成加载:后
出现以下错误:
jquery。js?ver=1.12.4:2未捕获类型错误:无法使用“in”运算符在中搜索“length”
最合适的回答,由SO网友:Muhammad Muazzam 整理而成
问题出在google api上,如前所述,它显示了与api相关的错误消息
jquery。js?ver=1.12.4:2未捕获类型错误:无法使用“in”运算符在中搜索“length”
因此,我在主题函数中添加了以下代码片段。调用google api早期版本的php。它解决了传递参数值的问题。所有其他代码都已经很好了。
//Making jQuery Google API
function modify_jquery() {
if (!is_admin()) {
// comment out the next two lines to load the local copy of jQuery
wp_deregister_script(\'jquery\');
wp_register_script(\'jquery\', \'https://ajax.googleapis.com/ajax/libs/jquery/1.8.1/jquery.min.js\', false, \'1.8.1\');
wp_enqueue_script(\'jquery\');
}
}
add_action(\'init\', \'modify_jquery\');
SO网友:scott
您在jQuery插件中收到一个错误。我不知道为什么,但这似乎是你发展的障碍。我查看了wordpress的安装,使用了相同版本的jQuery,但没有出现错误。
我不知道是否有导致冲突的插件或主题。通常的补救方法是禁用所有插件和主题,看看问题是否消失。
您还可以尝试将较旧版本的jQuery排队(如果可能的话),看看这是否可以解决问题。
也许是wordpress的安装被破坏了。你能在其他地方重新安装WP吗?您的本地计算机可能是一个很好的候选者。
很抱歉,我不知道您为什么会出现这个错误,很明显,在您清除这个错误之前,您将无法看到AJAX是否正常工作。
EDIT: 我想知道错误是在发送数据时发生的,还是在返回数据时发生的。在里面get_mata_value()
, 请尝试“echo$result;”,而不是“return($result)”。而不是“exit();”试试“wp\\u die();”。但不是$result
从数据库中,将其设置为测试值,如$result = "I get by with a little help from my friends";
我在谷歌上搜索了来自jQuery的错误消息。查看此问题的最后一个答案page. 我将更改change回调函数的第一行var id=this.id;
到var id=jQuery(this).id;