[英]AngularJS $http post to PHP page
經過數天的嘗試找到答案后,終於在$ http POST上使它工作了。 想知道為什么我不得不對兩個AngularJS $ http POST請求使用兩組不同的PHP代碼。 這是我的AngularJS $ http POST請求:
ContactsControllers.factory('messageFactory', ['$http', function($http){ return { sendMessage: function(message,contactIdArray){ return $http.post('/php/sendMessage.php', {message:message,contactIdArray:contactIdArray}); } }; }]); ContactsControllers.factory('messagesFactory', ['$http', function($http){ return { getContactMessages: function(contactid){ var config = { params: { contactid: contactid } }; return $http.post('/php/getMessages.php',null,config); } }; }]);
和我的兩個PHP代碼集:
$data = file_get_contents("php://input"); $data = json_decode($data, TRUE); $thisMessage = $data['message']; $contactIdArray = $data['contactIdArray'];
if($_SERVER["REQUEST_METHOD"] === "POST") { if(isset($_GET["contactid"])) { $contactid = json_decode($_GET["contactid"]); } else{ $result = "no contact id"; } echo json_encode($contactid); }
如果有人可以告訴我為什么我不能僅對我的'messagesFactory'$ http POST請求使用第一組angularJS和PHP代碼,它將幫助我更好地理解這一點。 就像我說的,經過幾天的嘗試不同的代碼后,我發現了這個http://www.angularjshub.com/examples/forms/formsubmission/ ,我終於開始工作了。
file_get_contents("php://input")
僅提供對POST數據的訪問。 因此,您不能使用它來訪問查詢字符串數據(GET),並且如果您在enctype="multipart/form-data"
也包含了enctype="multipart/form-data"
,那么它也不允許訪問POST數據。
您的第一個PHP腳本起作用的原因是因為您要查詢的數據是POST變量。
您的第一個php腳本不適用於您的第二個請求(其中數據位於url中)的原因是file_get_contents("php://input")
無法訪問GET數據。
您可以使用的解決方案是實現真正的GET請求,而不是從$ http進行POST;以POST的形式發送所有數據,而不是使用$ http進行GET;或者按照您的意願進行操作,並在PHP腳本中使用其他方法捕獲數據。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.