我是新手,我想使用Angular.js发出HTTP POST请求。我正在访问PHP脚本,这些脚本的参数只是POST变量。每个脚本返回的是一个JSON字符串。通常,以HTML格式可以发出这样的请求:
<form method="post" action="url.php"> <input name="this"> <input name="that"> <input value="Submit"> </form>
根据您的输入以及单击提交后,JSON data1将返回如下内容: { "code" : 1 }
{ "code" : 1 }
我无权访问脚本或托管它们的服务器。
我想知道Angular.js是否有可能读取JSON数据1,将该数据1与在JSON数据2中定义的数据进行匹配,然后将其输出到我的视图(<pre>data2</pre>)。
<pre>data2</pre>
例如,如果{ "code" : 1 }检索到,我希望我的JSON输出代码#1的值:
{ "code" : [ { 1: "User already logged in." }, { 2: "Wrong parameters, try again."}, { 3: "etc., etc." } ] };
这是我的尝试:
<form ng-controller="PhpCtrl" name="f1"> <input type="text" name="name"> <input type="text" name="password"> <pre ng-model="codeStatus">{{codeStatus}}</pre> <input type="submit" ng-click="add()" value="Submit"> </form> function PhpCtrl($scope, $http, $templateCache) { $scope.method = 'POST'; $scope.url = 'url.php'; $scope.codeStatus = ""; $scope.add = function() { $http({ method: $scope.method, url: $scope.url, headers: {'Content-Type': 'application/x-www-form-urlencoded'}, cache: $templateCache }). success(function(response) { $scope.codeStatus = response.data; }). error(function(response) { $scope.codeStatus = response || "Request failed"; }); return false; }; }
尽管它正在处理HTTP / 1.1 200,但到目前为止它向视图发布的只是“请求失败”消息。我知道我还有路要走,但是我会很感激。一旦弄清楚如何将适当的JSON data1发布到视图,下一步就是匹配并输出适当的data2。先感谢您!
准确地说,问题出在PHP后端,您没有像往常一样检索已发布的数据,这对我有用:
function PhpCtrl($scope, $http, $templateCache) { var method = 'POST'; var url = 'url.php'; $scope.codeStatus = ""; $scope.add = function() { var FormData = { 'name' : document.f1.name.value, 'password' : document.f1.password.value }; $http({ method: method, url: url, data: FormData, headers: {'Content-Type': 'application/x-www-form-urlencoded'}, cache: $templateCache }). success(function(response) { $scope.codeStatus = response.data; }). error(function(response) { $scope.codeStatus = response || "Request failed"; }); return false; }; }
在PHP文件中:
$data = json_decode(file_get_contents("php://input")); echo $data->name;
希望能有所帮助。