我想在自定义帖子创建中从管理员后台办公室到达wordpress ajax。
我试过没有结果发送POST请求,服务器回答:0,错误400.
我试图从amin_ajax.php转储$ _REQUEST,当我使用它时它是空的:
$.ajax({
url : ajaxUrl,
type : 'POST',
data : {
action : "gMapsLatLong",
adresse : adresse,
adresse2 : adresse2,
code_postal : code_postal,
ville : ville
},
contentType: "application/json; charset=utf-8",
dataType: "json",
});
我已尝试使用和不使用序列化数据对象,但没有结果。 当我尝试使用GET时,我只能通过"动作"变量,其他请求中不存在。
在我的function.php文件中,我放了:
add_action('wp_ajax_gMapsLatLong', 'gMapsLatLong');
add_action('wp_ajax_nopriv_gMapsLatLong', 'gMapsLatLong');
有人能看到我在这里遗失的明显事物吗?
答案 0 :(得分:1)
您已说过contentType: "application/json; charset=utf-8",
,但传递给data
的值不是JSON。
要么不覆盖Content-Type标头(这会导致PHP不解析请求主体,因为它没有对JSON编码请求的本机支持)或者将JSON传递给data
(通过编码使用JSON.stringify
)的JavaScript对象。
如果你采用后一种方法,那么PHP将需要读取原始请求体并明确地解析JSON。
答案 1 :(得分:1)
当您将json
发布到PHP时,它不会显示在$_POST
全局中。如果您想要发送'application/x-www-form-urlencoded; charset=UTF-8'
正常帖子,则应移除contentType
,然后它会显示在$_POST
中。如果你想发布json,那么你需要这样做:
$.ajax({
url : ajaxUrl,
type : 'POST',
data : JSON.stringify({
action : "gMapsLatLong",
adresse : adresse,
adresse2 : adresse2,
code_postal : code_postal,
ville : ville
}),
contentType: "application/json; charset=utf-8",
dataType: "json",
});
然后在PHP中你可以这样做:
$_JSON = json_decode(file_get_contents('php://input'), true);
答案 2 :(得分:0)
经过一番尝试和错误后,我发现了两个问题:
jQuery.ajax({
而不是
$.post({
由于一些愚蠢的误解,我的价值观未定义。 谢谢你的阅读!