我需要帮助才能理解这里的错误,例如我有以下内容:
$http({
method: 'POST',
url: '/wp-admin/admin-ajax.php',
params: {
action: "update_something_really_cool",
user_data: "---- :D "
}
}).success(function(data){
console.log(data);
});
这将在控制台返回:
Object{'user_data': null}
http请求就是这样的,因为样式如下:
$http.post
$http.get
返回0
,表示未触发操作。
在wordpress级别,我有这个:
function update_something_really_cool(){
$user_data = $_POST['user_data'];
echo json_encode(array('user_data' => $user_data));
exit();
}
add_action( 'wp_ajax_update_something_really_cool', 'update_something_really_cool' );
add_action( 'wp_ajax_nopriv_update_something_really_cool', 'update_something_really_cool' );
我尝试使用$.param
,但结果仍然相同......
还尝试使用不同的标题:
headers: { 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'},
有人知道怎么做吗?使用其他操作我没有问题,但是当我需要传递除动作参数之外的其他内容.. :(
答案 0 :(得分:0)
确实有效的唯一解决方案是:
$http({
method: 'POST',
url: '/wp-admin/admin-ajax.php',
data: $.param({
action: 'update_something_really_cool',
user_data: data // object {key:value}
}),
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
}
}).success(function(data){
console.log(data);
//outputs the sent opbject
});
出于某种原因,$.param
之前没有传递正确的值..但是这个解决方案在按照这种方式排序的时候确实有效...我希望它可以帮助一些人;)