Я совершенно уверен, что все аргументы, которые я привел в register()
иметь значения. Это js
код.
$scope.register = function(
$reg_code, $prov_code, $citymun_code, $brgy_code, $street,
$user_name, $user_email, $user_contact, $user_password
) {
//displays the arguments
alert("region: " + $reg_code + ", province: " + $prov_code + ", citymun: " + $citymun_code + ", barangay: "+ $brgy_code + ", street: " + $street + ", user_name: " + $user_name + ", user_email: " + $user_email + ", user_contact: "+ $user_contact + ", user_password: " + $user_password);
$http({
method: "POST",
url: "http://" + host + "/mobile/register.php",
data: JSON.stringify({
user_password_reg: $user_password,
user_email_reg: $user_email,
user_contact_reg: $user_contact,
user_name_reg: $user_name,
region: $reg_code,
province: $prov_code,
citymun: $citymun_code,
barangay: $brgy_code,
street: $street,
echo: "1",
success: "0",
user_acc_type: "log account"}),
headers: {'Content-Type': 'application/x-www-form-urlencoded'}
}).then(function(res) {
alert("success1: " + res.data.success1 + ", success2: " + res.data.success2 + ", success3: " + res.data.success3);
});}
Это скрипт php
<?php
header('Access-Control-Allow-Origin: *');
header('Content-Type: application/json; charset=utf-8');
//converts data to post
$postData = file_get_contents("php://input");
$post = json_decode($postData);$echo = array();
$echo["success1"] = 0;
$echo["success2"] = 0;
$echo["success3"] = 0;
if(isset($post["region"]) &&
isset($post["province"]) &&
isset($post["citymun"]) &&
isset($post["barangay"]) &&
isset($post["street"]) &&
isset($post["user_password_reg"]) &&
isset($post["user_name_reg"]) &&
isset($post["user_email_reg"]) &&
isset($post["user_contact_reg"])
) {
$echo["success1"] = 1;
$echo["success2"] = 1;
$echo["success3"] = 1;
} else {
$echo["success1"] = 2;
$echo["success2"] = 2;
$echo["success3"] = 2;
}
echo json_encode($echo);
?>
Эта программа еще не завершена. Сначала я хотел убедиться, что php получает все нужные параметры из post и возвращает или echo
это правильное значение. Тем не менее, в этом коде я получаю эту ошибку в консоли.
SyntaxError: Unexpected token < in JSON at position 0
at JSON.parse (<anonymous>)
at fromJson (ionic.bundle.js:9892)
at defaultHttpResponseTransform (ionic.bundle.js:17406)
at ionic.bundle.js:17491
at forEach (ionic.bundle.js:9150)
at transformData (ionic.bundle.js:17490)
at transformResponse (ionic.bundle.js:18216)
at processQueue (ionic.bundle.js:22016)
at ionic.bundle.js:22032
at Scope.$eval (ionic.bundle.js:23228)
если <
читается в выводе json php, это означает, что произошла ошибка со стороны php-кода. Мне довольно сложно отлаживать код php, так как AngularJS автоматически анализирует данные из php. Следовательно, я не вижу деталей ошибки. И кроме того, я действительно сомневаюсь, что этот простой скрипт php будет иметь ошибку.
Заранее спасибо.
Ваш PHP-код, вероятно, вызывает ошибку, приводящую к HTML-ответу.
Скорее всего, это связано с тем, что вы пытаетесь получить доступ к свойствам объекта в виде индексов массива, вызывая что-то вроде
Неустранимая ошибка: невозможно использовать объект типа stdClass в качестве массива
Измените свой код на
$post = json_decode($postData, true);
Увидеть http://php.net/manual/function.json-decode.php#refsect1-function.json-decode-parameters
Я также предполагаю, что вы используете Content-Type: application/x-www-form-urlencoded
держать просьбу просто. Я бы посоветовал text/plain
вместо этого, поскольку ваши данные, безусловно, не закодированы в URL.
$http.post("http://" + host + "/mobile/register.php", {
user_password_reg: $user_password,
user_email_reg: $user_email,
user_contact_reg: $user_contact,
user_name_reg: $user_name,
region: $reg_code,
province: $prov_code,
citymun: $citymun_code,
barangay: $brgy_code,
street: $street,
echo: "1",
success: "0",
user_acc_type: "log account"}, {
headers: { 'Content-type': 'text/plain' }
})
Других решений пока нет …