Wordpress Ajax无法使用POST,无法传递对象

时间:2018-04-04 17:38:26

标签: php ajax wordpress

我想在自定义帖子创建中从管理员后台办公室到达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');

有人能看到我在这里遗失的明显事物吗?

3 个答案:

答案 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({

由于一些愚蠢的误解,我的价值观未定义。 谢谢你的阅读!