angularJS裡的$http.post傳資料到php接收問題
阿新 • • 發佈:2019-02-08
最近學習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的值了。
好了,大功告成。