我需要帮助从PHP代码收到的请求中从javascript发送json字符串

时间:2018-01-30 05:58:51

标签: javascript php json request

相当新的编程,我无法弄清楚如何做到这一点,或者它可能这样做。我希望能够将我的javascript对象数组插入到myphp管理数据库中。我试图通过json将对象传递给将接收请求并执行insert语句的php代码。我被困了因为我无法获取我的php页面来接收请求。下面的代码显示了我在哪里。

Javascript功能

function submitExpenses(){

          var json = JSON.stringify( expenses );

          request= new XMLHttpRequest();

          request.open("POST", "InsertExpense.php", false);

          request.setRequestHeader("Content-type", "application/json");

          request.send(json);

        }

InsertExpense.php ...

  if ($_REQUEST) //Never receives request
{

  include('/DB/connect_to_database.php');
  $json = json_decode(file_get_contents('php://input'));



 foreach ($json as $key => $value) {
           print "$key => $value\n";
       }

// $sql = "INSERT INTO daily_expense (Amount, Category, Dateof)
// VALUES ()";

// if ($dbh->query($sql) === TRUE) {
//     echo "New record created successfully";
// } else {
//     echo "Error: " . $sql . "<br>" . $dbh->error;
// }

// $dbh->close();
// }
}

1 个答案:

答案 0 :(得分:0)

$ _ POST,$ _GET,$ _REQUEST无法直接解析application / json内容类型。 因此,当您将内容类型作为application / json发送时,所有这三个都保持为null。 移除 if 条件。而是执行以下操作。

InsertExpense.php

 if ($_REQUEST) { // Never full fill the condition because its always null

  echo json_encode($_REQUEST);
}

$data = json_decode(file_get_contents('php://input'), true);

if ($data) { // successfully retrive data so its become true.
echo json_encode($data);
}