Я использую угловой http-клиент для взаимодействия с базой данных, и все работает, но когда я пытаюсь POST-данные к той же ссылке, используя форму, я получаю, что данные не определены.
Я пытался кодировать, декодировать значения, поскольку я знаю, что перед выполнением любого запроса POST и отправкой данных мне нужно выполнить метод angular.toJSON, но это не сработало.
Это мой index.php, где я получаю запрос POST из формы.
if (empty($action)) {
if ((($_SERVER['REQUEST_METHOD'] == 'POST')) &&
(strpos($_SERVER['CONTENT_TYPE'], 'application/json') !== false)) {
$input = json_decode(file_get_contents('php://input'), true);
$action = isset($input['action']) ? $input['action'] : null;
$subject = isset($input['subject']) ? $input['subject'] : null;
$data = isset($input['data']) ? $input['data'] : null;
}
case 'createNote':
// if I die() here, it prints the die()
if(!empty($data)) {
// if I die() here, $data is undefined.
$data = json_decode($data);
$user = $data[0];
$comment = $data[1];
$film_id = $data[2];
$lastupdated = date("Y-m-d H:i:s");
$sql = "INSERT INTO nfc_note (user, film_id, comment, lastupdated)
VALUES (:user, :film_id, :comment, :lastupdated)";
}
break;
Моя форма, которую я использую для отправки POST-запроса
<form action="index.php" method="POST">
<input type="hidden" name="action" value="create">
<input type="hidden" name="subject" value="note">
<input type="hidden" name="data" value="<?php echo "['username','content', 1]"; ?>">
<input type="submit" value="Submit">
</form>
Как упомянуто выше, это работает, когда я использую http angular и параметры передачи как это:
this.createNote = function (data) {
var defer = $q.defer(),
data = {
action: "create",
subject: "note",
data: angular.toJson(data)
};
$http
.post(urlBase, data)
.success(function (response) {
defer.resolve({
data: response.data
});
})
.error(function (error) {
defer.reject(error);
});
return defer.promise;
};
Не работает при использовании формы. Любые предложения или ошибки, о которых я не знаю?