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