簡體   English   中英

AngularJS $ http發布到PHP頁面

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM