запрос $ angularjs $ http превращает строковые данные в объект - PullRequest
0 голосов
/ 29 апреля 2018

Когда я отправляю данные в файл PHP с помощью поста AngularJS $ http, тип данных должен быть строкой. Но когда я пытаюсь получить выходные данные из файла PHP (я просто просто передаю $_POST['string']) функцией then, они автоматически каким-то образом изменяются на тип [object Object].

Вот код:

JS:

$http({
                method:"POST",
                type:"json",
                url:"./forms/crud.php",
                data:{id:cId}
            }).then(function (d) {
                alert(d.config.data.id);
                console.log(d);
            })

PHP:

if(is_post_quest()){
    echo $_POST['id'];
}

Вывод на консоль:

    {data: "", status: 200, headers: ƒ, config: {…}, statusText: "OK", …}

Я могу получить доступ к данным id, набрав d.config.data.id, что не совсем то, что я хочу.

enter image description here

Мне кажется, проблема в том, что получение данных из AngularJs в PHP-файле несколько отличается от использования AJAX.

Для AJAX, для получения данных буквально просто нужно использовать $_POST['id']. Однако для AngularJS HTTP POST-запроса необходимо ввести что-то вроде:

$data = json_decode(file_get_contents("php://input"));

echo $data->id;

А вот как это выглядит сейчас.

{data: "568", status: 200, headers: ƒ, config: {…}, statusText: "OK", …}

Ответы [ 2 ]

0 голосов
/ 29 апреля 2018

Я сделаю пример для запроса данных из angular и получения кода php, а затем получения результата обратно.

// Угловой код

    var url   = 'your url';
    var data  = {
          "type": "json",
    };

    //Ajax call
    $http.post(url, data).success(function (data, status, headers, config) {

             var result = angular.fromJson(data);
    }).error(function (data, status, headers, config) {

            $scope.preloader=false;

    });

// PHP Code

$ postdata = file_get_contents ("php: // input");

$ request = json_decode ($ postdata);

echo json_encode (['data' => $ this-> request-> data, 'status' => true, 'error' => '']);

0 голосов
/ 29 апреля 2018

Вы должны сделать это так

$http({
                method:"POST",
                type:"json",
                url:"./forms/crud.php",
                data:JSON.stringify({id:cId})
            }).then(function (d) {
                alert(d.config.data.id);
                console.log(d);
            })
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...