2014-10-17 1 views
0

В угловом im с использованием $http.post для отправки идентификатора скрипту php, чтобы использовать этот идентификатор для запроса mysql.

Это мой контроллер:

function ProjectDetailsCtrl($scope, $http, $timeout, getGoodIdProjectDetails) { 

    $scope.idProjectDetails = getGoodIdProjectDetails.getId(); //Getting id project 

    $scope.$emit('LOAD') 
    $scope.url = 'scripts/findProjectDetails.php'; 

    $http.post($scope.url, { "idProject" : $scope.idProjectDetails}). 
    success(function(data, status) { 
     $scope.projectDetails = {}; 
     $scope.projectDetails.details = data; 
     $scope.$emit('UNLOAD') 
    }) 
    . 
    error(function(data, status) { 
     $scope.data = data || "Request failed"; 
     $scope.status = status;   
    }); 
} 

idProjectDetails это число.

Затем скрипт Php:

<?php 
$idProject = json_decode($_POST['idProject']); 

Php скрипт возвращает этот $idProject не определен.

Можете ли вы мне помочь?

Edit: Я попробовал этот путь, но мое приложение разбилось с этим:

$http.defaults.headers.post["Content-Type"] = "application/x-www-form-urlencoded"; 
$http({ 
    method: 'POST', 
    url: 'scripts/findProjectDetails.php', 
    data: "idProject" : $scope.idProjectDetails 
}).success(function(data, status) { 
    $scope.projectDetails = {}; 
    $scope.projectDetails.details = data; 
    console.log(projectDetails.details); 
    $scope.$emit('UNLOAD') 
}) 
. 
error(function(data, status) { 
    $scope.data = data || "Request failed"; 
    $scope.status = status;   
}); 

С первым примером, в консоли Chrome, то «запрос playload» содержит следующее: {idProject:1}idProject:1 поэтому я предполагаю, что мои переменное правильно прошел через php-скрипт?

+0

'json_decode ($ _ POST ['idProject']);' не имеет смысла, если '$ scope.idProjectDetails' - это номер, который вы указали. –

+0

Хорошо, $ scope.idprojectДетали - это определенно число, так что имеет смысл? – Simonux

+0

Возможно, я ошибаюсь, согласно цитате из приведенного ниже ответа. но я думаю, вы должны просто использовать его как число, не расшифровывать. –

ответ

0

Существует много путаницы среди новичков AngularJS, почему функции сокращенных $ службы HTTP ($ http.post() и т.д.), кажется, не быть заменой с эквивалентами JQuery (jQuery.post () и т. д.). Разница заключается в том, как jQuery и AngularJS сериализуют и передают данные. В основном проблема заключается в том, что ваш серверный язык выбора не может понять передачу AngularJS изначально ... По умолчанию jQuery передает данные с использованием Content-Type: x-www-form-urlencoded и знакомого foo = bar & baz = moe serialization , Однако AngularJS передает данные с использованием Content-Type: application/json и {"foo": "bar", "baz": "moe"} Сериализация JSON, к сожалению, некоторые языки веб-сервера, особенно PHP, не отделяются от нуля.

Так что, ваша переменная $ _POST пуста!

Чтобы пройти через эту проблему там уже 2 решения:

Я не придумал ничего здесь, только ссылки ... Надеюсь, это поможет.

+0

Thx для помощи, но я все еще не могу выяснить, что не так с моим кодом ... – Simonux

+0

Кажется, каждый раз, когда я пытаюсь изменить заголовки моего краха приложения ... – Simonux

Смежные вопросы