2014-09-24 4 views
0

Наконец-то это получило $ http POST после нескольких дней попыток найти ответ. Хотелось бы знать, почему мне пришлось использовать два разных набора кода PHP для двух запросов HTTP POST AngularJS $ http. Это мои AngularJS $ HTTP запросы POST:

ContactsControllers.factory('messageFactory', ['$http', function($http){ 
 
\t return { 
 
\t \t sendMessage: function(message,contactIdArray){ 
 
\t \t \t return $http.post('/php/sendMessage.php', {message:message,contactIdArray:contactIdArray}); 
 
\t \t \t } 
 
\t \t }; 
 
}]); 
 

 
ContactsControllers.factory('messagesFactory', ['$http', function($http){ 
 
\t return { 
 
\t \t getContactMessages: function(contactid){ 
 
\t \t \t var config = { 
 
\t \t \t \t params: { 
 
\t \t \t \t \t contactid: contactid 
 
\t \t \t \t } \t 
 
\t \t \t }; 
 
\t \t \t return $http.post('/php/getMessages.php',null,config); 
 
\t \t } 
 
\t }; 
 
}]);

и мои Кодовая два PHP:

$data = file_get_contents("php://input"); 
 
$data = json_decode($data, TRUE); 
 
$thisMessage = $data['message']; 
 
$contactIdArray = $data['contactIdArray'];
if($_SERVER["REQUEST_METHOD"] === "POST") 
 
{ 
 
\t if(isset($_GET["contactid"])) 
 
\t { 
 
\t \t $contactid = json_decode($_GET["contactid"]); 
 
\t } 
 
\t else{ 
 
\t \t $result = "no contact id"; 
 
\t } 
 
\t echo json_encode($contactid); 
 
}

Если кто-то может сказать мне, почему я не мог просто используйте первые команды angularJS и PHP-кода для моего запроса «messagesFactory» $ http POST, это поможет мне понять это немного лучше. Как я уже говорил через пару дней, проверяя другой код, я нашел этот http://www.angularjshub.com/examples/forms/formsubmission/, который я наконец получил.

ответ

0

file_get_contents("php://input") дает только доступ к данным POST. Поэтому вы не можете использовать его для получения доступа к строковым данным запроса (GET), и, кстати, он не разрешает доступ к данным POST, если вы включили enctype="multipart/form-data" в свою форму.

Причина, по которой работает ваш первый скрипт php, заключается в том, что данные, которые вы запрашиваете, являются переменными POST.

Причина, по которой ваш первый скрипт php не работает для вашего второго запроса, где данные находятся в URL-адресе, заключается в том, что file_get_contents("php://input") не может получить доступ к данным GET.

Решения, которые вы можете использовать, - это реализовать истинный запрос GET вместо POST из $ http, чтобы отправить все данные как POST, а не GET, используя $ http, или сделать то, что у вас есть, и поймать данные, используя другой метод в ваш php-скрипт.