1. 程式人生 > >angularJS裡的$http.post傳資料到php接收問題

angularJS裡的$http.post傳資料到php接收問題

最近學習angularJS,發現使用其自身的$http.post向後臺php傳送資料,php接收不到的問題。比如:

$http.post("php/getRoleRight.php", {rr:$scope.currSelect}).success(function(response) { ·· });
 php使用
$_POST['rr']
接收不到傳過來的引數。

開啟firebug發現其實傳成功了,折騰了好半天才發現,它只不過傳輸的格式與普通的傳輸格式比如jQuery裡的$.post()方法傳輸的格式不同,$http.post()是以json格式傳輸,而$.post()是以表單引數形式傳輸,而php的$.POST[]是期待以後者的形式接收前臺傳輸過來的資料的,因此讀取不到json傳的資料。

上網看了一下加上自己的實驗,有兩種方式解決這個問題:

1.簡單粗暴的直接改成$.post()方法,這樣後臺不用作任何修改,但是網上一些比較有經驗的網友稱這樣可能違背使用angular的初衷。

2.修改php程式碼

$postData = file_get_contents('php://input', true);
$obj=json_decode($postData);	
$query1 = "SELECT * FROM role_roleRight  WHERE roleId=$obj->rr";	
先讀取到json字串,然後解析成物件,這樣可以用物件屬性的方式取到傳過來的引數rr的值了。

好了,大功告成。