XMLHttpRequest发布空体

时间:2016-07-31 14:52:04

标签: javascript json ajax

当我尝试将一些数据发布到我的后端API服务时,我使用XMLHttpRequest对象,但当我尝试使用ajax.send发送数据时,它没有向服务器发送任何内容

Code snipper:

ajax = new XMLHttpRequest();
ajax.open("POST", "https://someapi.com",true);
ajax.send({
  name: "Name",
  phone: "123468375698563897569575863"
});

ajax.onreadystatechange = function(){

    if(ajax.readyState==4){
        JSONback = JSON.parse(ajax.response);
        console.log(JSONback);
    }
};

2 个答案:

答案 0 :(得分:0)

您无法通过网络直接发送JS对象。

您需要先将其转换为字符串,就像您需要在获取它时解析它一样。

ajax = new XMLHttpRequest();
ajax.open("POST", "https://balbalbal.com", true);
ajax.send(
  JSON.stringify({
    name: "Name",
    phone: "123468375698563897569575863"
  })
);

ajax.onreadystatechange = function(){
  if(ajax.readyState==4){
    JSONback = JSON.parse(ajax.response);
    console.log(JSONback);
  }
};

服务器端最简单的PHP测试代码是:

<?php
  echo file_get_contents('php://input');
?>

这是一个稍微更高级的示例,它将对其进行解码,添加新字段并将其发回:

<?php
  $json = file_get_contents('php://input');
  $object = json_decode($json);
  $object->id = 123;

  echo json_encode($object);
?>

答案 1 :(得分:0)

你需要:

  1. 假设您要发送JSON
  2. 将您的JavaScript数据结构转换为JSON
  3. 这样:

    var data = {
        name: "Name",
        phone: "123468375698563897569575863"
    };
    
    var json = JSON.stringify(data);
    
    var ajax = new XMLHttpRequest();
    ajax.open("POST", "https://balbalbal.com", true);
    ajax.setRequestHeader("Content-Type", "application/json");
    ajax.send(json);