Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript POST方法未发送所有数据_Javascript_Angularjs_Node.js_Express - Fatal编程技术网

Javascript POST方法未发送所有数据

Javascript POST方法未发送所有数据,javascript,angularjs,node.js,express,Javascript,Angularjs,Node.js,Express,我正在一个有趣的小项目中使用angular、node、express和postgresql/sequelize。然而,它变得有点太有趣了。我是在这种环境下开发的新手,所以我可能使用了一些不正确的结构。但是,我正在尝试为模型设置更新路径。更新的JS看起来很好,正如它应该做的那样,但这里的问题是,当调用函数并启动post方法时,它不会从html中的表单组中获取值 以下是html/angular的一个片段: <div class="container"> <div ng-cont

我正在一个有趣的小项目中使用angular、node、express和postgresql/sequelize。然而,它变得有点太有趣了。我是在这种环境下开发的新手,所以我可能使用了一些不正确的结构。但是,我正在尝试为模型设置更新路径。更新的JS看起来很好,正如它应该做的那样,但这里的问题是,当调用函数并启动post方法时,它不会从html中的表单组中获取值

以下是html/angular的一个片段:

<div class="container">
  <div ng-controller="SomethingCtrl">
    <form ng-submit="updateSomething(updateform)" role="form" ng-init="updateform = {}">
      <div class="datagrid"><table>
        <thead>
        <tr>
          <th> ID </th>
          <th> field1 </th>
          <th> field2 </th>
          <th> field3 </th>
        </tr>
        </thead>
        <tbody>
        <tr ng-repeat="something in somethings | filter:{id:somethingId} | orderBy:'id' | limitTo: 1 track by $index">
          <td>
            {{something.id}}
          </td>
          <td>
            <div class="form-group">
              <input class="form-control" type="text" name="field1" value="{{something.field1}}"/>
            </div>
          </td>
          <td>
            <div class="form-group">
              <input class="form-control" type="text" name="field2" value="{{something.field2}}">
            </div>
          </td>
          <td>
            <div class="form-group">
              <input class="form-control" type="number" name="field3" value="{{something.field3}}">
            </div>
          </td>
        </tr>
        </tbody>
      </table>
      </div>
      <div>
        <button type="submit"><strong>Update</strong></button>
      </div>
    </form>
  </div>
</div>
在控制器中:

$scope.updateSomething = function () {
  $http.post('/somethingupdate/:id', {
    field1: $scope.somethingField1,
    field2: $scope.somethingField2,
    field3: $scope.somethingField3,

  }).success(function (data, status, headers, config) {
    $scope.somethings.push({
    field1: $scope.somethingField1,
    field2: $scope.somethingField2,
    field3: $scope.somethingField3,
    });
    $scope.somethingField1 = '';
    $scope.somethingField2 = '';
    $scope.somethingField3 = '';
  }).error(function (data, status, headers, config) {
    console.log("Ops: " + data);
  });
};
以下是控制台中的结果:

Executing (default): SELECT "id", "field", "createdAt", "updatedAt" FROM  "Soemthings" AS "Something" WHERE "Something"."id" = 'id value';
Executing (default): UPDATE "Somethings" SET "field1"='' "field2" = '' "field3" = '' "updatedAt"='2016-06-09 20:20:57.384 +00:00' WHERE "id" = id value

尝试ng model=“something.field1”而不是value=“{{something.field1}}”等..

尝试ng model=“something.field1”而不是value=“{{something.field1}}”等..

更新

提交时传递的是一个空集,请检查updateform变量

您需要将ng模型添加到以更新表单开始的输入中

然后在函数$scope.updateMething之外的控制器中:

$scope.updateform = {
    field1: '',
    field2: '',
    field3: ''
}
然后,在更新添加参数字段的控制器功能中,如果
字段
包含数据,请尝试检查控制台日志:

$scope.updateSomething = function (field) {
    console.log(field);
    $http.post('/somethingupdate/' + field.id, {
        field: field,
    }).success(function (data, status, headers, config) {
        $scope.somethings.push({
           field: field
        });
    }).error(function (data, status, headers, config) {
        console.log("Ops: " + data);
    });
};

这里是一个正在运行的

更新版

提交时传递的是一个空集,请检查updateform变量

您需要将ng模型添加到以更新表单开始的输入中

然后在函数$scope.updateMething之外的控制器中:

$scope.updateform = {
    field1: '',
    field2: '',
    field3: ''
}
然后,在更新添加参数字段的控制器功能中,如果
字段
包含数据,请尝试检查控制台日志:

$scope.updateSomething = function (field) {
    console.log(field);
    $http.post('/somethingupdate/' + field.id, {
        field: field,
    }).success(function (data, status, headers, config) {
        $scope.somethings.push({
           field: field
        });
    }).error(function (data, status, headers, config) {
        console.log("Ops: " + data);
    });
};

这是一个有效的

嘿,@Efx我已经试过了,但是没有用。更新时,仅更新updatedAt和一个field属性。field属性的值为“”,我相信它来自
$scope.somethingField=''语句。您有什么建议吗?您可以在控制器中的函数上添加一个参数字段,并在$scope.somethingField中使用它来替换
$scope.somethingField=''?但是,当使用ng模型时,当表单提交时,没有任何内容作为参数提交。在该更新中,您可以将console.log的结果发送给我吗?嘿,@Efx我尝试过这个方法,但没有帮助。更新时,仅更新updatedAt和一个field属性。field属性的值为“”,我相信它来自
$scope.somethingField=''语句。您有什么建议吗?您可以在控制器中的函数上添加一个参数字段,并在$scope.somethingField中使用它来替换
$scope.somethingField=''?但是,当使用ng模型时,当表单提交时,没有任何内容作为参数提交。在该更新中,您可以将console.log的结果发送给我吗?
$scope.updateSomething = function (field) {
    console.log(field);
    $http.post('/somethingupdate/' + field.id, {
        field: field,
    }).success(function (data, status, headers, config) {
        $scope.somethings.push({
           field: field
        });
    }).error(function (data, status, headers, config) {
        console.log("Ops: " + data);
    });
};