Я следующий сценарий, у меня есть Угловая переменная называется contact
, который является объектом JSON, который имеет следующие элементы:
- Сообщение
- Имя
- Телефон
Я console.log(contact)
и регистрирует правильную информацию, однако, как только посланный, $_POST['contact']
приводит к пустому массиву. Я читал и обнаружил, что $_POST['contact']
не будет заполнен так, как если бы это был HTTP-запрос от jQuery. Так что я установил его к следующему:
$params = json_decode(file_get_contents('php://input'),true);
print_r($params);
А вот Угловая функция:
$scope.submitForm = function(contact){
console.log(contact);
$scope.clearContactFormData();
return $http.post('http://localhost/cpr_courses/app/methods/contact.php', contact).success(function(data){
Materialize.toast(data, 4000);
});
}
Еще print_r($params)
пуста. Я понятия не имею, что еще происходит. Любая помощь, пожалуйста?
EDIT
console.log()
выводит следующее:
Array[0]
email
:
"[email protected]"
length
:
0
message
:
"rubAWREIUVBAERWOBNATEIOBrubAWREIUVBAERWOBNATEIOBrubAWREIUVBAERWOBNATEIOBrubAWREIUVBAERWOBNATEIOBrubAWREIUVBAERWOBNATEIOBrubAWREIUVBAERWOBNATEIOBrubAWREIUVBAERWOBNATEIOBrubAWREIUVBAERWOBNATEIOBrubAWREIUVBAERWOBNATEIOBrubAWREIUVBAERWOBNATEIOBrubAWREIUVBAERWOBNATEIOBrubAWREIUVBAERWOBNATEIOBrubAWREIUVBAERWOBNATEIOB"
name
:
"rubAWREIUVBAERWOBNATEIOB"
phone
:
"13345678"
и вот вкладка сети изображение:
Вот декларация объекта JSON:
$scope.contact = {};
$scope.onlyNumbers = /^[0-9]+$/;
Это позже надеть на форму, как это:
<form method="post" class="form-sl" role="form" name="contactForm" ng-submit="submitForm(contact)" novalidate enctype="multipart/form-data">
и позже, на каждом поле, как это:
<input type="email" name="email" id="email" ng-model="contact.email" autocomplete="off" ng-maxlength="50" length="50" required/>
Это нормально?
Посмотрите на сетевой инспектор вашего браузера, каков фактический необработанный HTTP-запрос. Он не имеет ничего общего с jQuery или Angular, PHP не знает и не заботится о том, кто отправил запрос. Важен формат запроса и то, как PHP обрабатывает разные форматы. – deceze
Как точно выглядит вывод console.log (контакт)? –
Проверьте, что браузер отправляет на вашу сетевую вкладку, и убедитесь, что это так, как вы думаете, и что это действительно json.После того, как вы подтвердили это, echo 'file_get_contents ('php: // input')' в php (без json_decode) и посмотреть, что php получает. – Alcinator