Файл php не получает данные от angularjs, однако данные присутствуют в массиве

Это мой код php:

<?php
$con = mysqli_connect("localhost", "root", "123", "project");

if (mysqli_connect_error()) {
    echo "connection failed, restart server" . mysqli_connect_error();
}
$total    = 0;
$recieved = 0;

$someJSON  = file_get_contents("php://input");
$someArray = json_decode($someJSON, true);
$id        = $someArray["id"];
$tranDate  = $someArray["tranDate"];
$tranId    = $someArray["tranId"];
$amount    = $someArray["amount"];
$gift      = $someArray["gift"];

if (!empty($id) && !empty($tranDate) && !empty($tranId) && !empty($amount) && !empty($gift)) {


    $sql = "INSERT INTO alltransectiondata (id, tranId, tranDate, gift, amount) " . "VALUES ('" . $id . "', '" . $tranId . "', '" . $tranDate . "', '" . $gift . "', '" . $amount . "');";

    if (mysqli_query($con, $sql)) {
        echo "success";
    } else {
        echo "failure";
    }
} else {
    echo "details are empty!!";
}
?>

Это код angularjs:

$scope.addTran = function(newData) {
    newData["id"] = $scope.currentId;
    console.log(newData); //this is showing full array no empty details
    sendData = angular.toJson(newData); //tried with converting to JSon, still not working
    console.log(angular.toJson(newData)); //this is also showing full array no empty details

    $http.post('php/addNewTransection.php', newData /*sendData*/ ).then(function(response, error) {
        console.log(angular.toJson(newData));
        console.log(response.data); //this shows []
        //$scope.indiData = response.data;
        //get();
    });

}

Я работаю с другим кодом PHP и angular с тем же форматом, и все, что там возникает, здесь только PHP получает нулевой идентификатор, tranId и т.д., код не работает с массивом, а также не с объектом json. (Пробовал оба) в других файлах я используя angular.toJSon, который работает. все названия и синтаксис верны 3-4 раза, также я запускал файл PHP в браузере, он правильный, без ошибок,

Что я делаю неправильно?

используйте .then(function(response){...}, function(error){...}) ИЛИ .then(response, error) (если они уже работают)

Aleksey Solovey 11.04.2018 14:17

возвращаемое значение не эхо-значение

Sachin Aghera 11.04.2018 14:22

Я удалил свой ответ, так как думаю, что ошибся. Я не думаю, что в том, что вы здесь показываете, достаточно информации, чтобы понять, что происходит не так. В идеале вы хотите увидеть фактический сетевой запрос, который был сделан. Вы можете сделать это, например, в Инструментах разработчика Chrome. Затем я бы проверял каждый шаг процесса (проверял, что находится внутри переменной $ someJSON, что находится внутри переменной $ someArray и т. Д.), Чтобы определить, где что-то идет не так.

ChrisM 11.04.2018 14:55

В качестве примечания я заметил, что вы используете инъекцию необработанных переменных в своем SQL-запросе. в случае, если вы не знаете, очень важно, чтобы вы не делали этого ни в каком производственном коде (и достаточно важно, чтобы я никогда этого не делал даже при тестировании). Информация здесь: w3schools.com/sql/sql_injection.asp

ChrisM 11.04.2018 14:56

В коде Angular к объекту добавляется только id, больше ничего? В этом случае часть PHP получит только, например. {"id": "someValue"} и перейдите в ветку details are empty! else. Ответ пуст, вероятно, потому что вы не определили тип содержимого для вывода PHP, например. header('Content-Type: text/plain'); в начале файла PHP.

Juha Untinen 11.04.2018 15:03

@AlekseySolovey, спасибо, но попробовал, что все еще $ id и другие получают null;

mahipal singh 11.04.2018 15:09

И я считаю, что Angular response требует JSON, поэтому вам нужно будет вернуть JSON со стороны PHP. Итак, установите заголовок: header('Content-Type: application/json'); и создайте объект, например. $response["data"] = "Hello there";, а потом верните: echo json_encode($response['data']); return http_response_code(200);

Juha Untinen 11.04.2018 15:10

@JuhaUntinen, на самом деле другие данные поступают из функциональной части через пену в html, и в консоли я вижу, что данные, все параметры верны, проблема в php $ id, $ gift и т. Д. Становятся нулевыми.

mahipal singh 11.04.2018 15:12

@JuhaUntinen, спасибо, попробую вернуть http_response_code, кстати, в моих файлах php angular я работаю с тем же форматом, который все работает ..

mahipal singh 11.04.2018 15:15

@mahipalsingh попробуйте другой синтаксис: json_decode($someJSON); и $someArray->id;

Aleksey Solovey 11.04.2018 15:17

спасибо @JuhaUntinen, он работает в формате $ http.post ('php / somefile.php', {"id": $ scope.currentId, "TranUniqueId": TranUniqueId}), но мне нужно будет проверить, почему он работает с прямые объекты json в других файлах. : D

mahipal singh 11.04.2018 16:45

@ChrisM, спасибо за предложение, я понял, на самом деле мы занимаемся автономным управлением хранилищем данных, и ip не будет статическим, поэтому здесь используется необработанная переменная.

mahipal singh 11.04.2018 18:29
2
12
60
0

Другие вопросы по теме