一尘不染

使用Angular.js的HTTP POST

angularjs

我是新手,我想使用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 }

我无权访问脚本或托管它们的服务器。

我想知道Angular.js是否有可能读取JSON数据1,将该数据1与在JSON数据2中定义的数据进行匹配,然后将其输出到我的视图(<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。先感谢您!


阅读 172

收藏
2020-07-04

共1个答案

一尘不染

准确地说,问题出在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;

希望能有所帮助。

2020-07-04