【发布时间】:2015-10-15 19:46:10
【问题描述】:
尝试在我的表中插入一条新记录,当我想插入带有日期字段的行时,我总是收到错误 400(错误请求,语法错误)。我测试了从表单中删除“日期”字段的 POST,它可以工作。一旦添加此输入,它就会停止工作。这是一个简单的文本输入,我使用现有行中的日期(复制/粘贴)来测试它,因为它适用于 $http.PUT。
我有 'Content-Type': 'application/x-www-form-urlencoded'
当我更新现有行 ($http.PUT) 时,它可以完美运行,但是当我尝试创建新行时,它不会。我对这一切都很陌生,我搜索了很多论坛,但找不到任何我想做的例子。
我不知道该提供什么来帮助你理解,但问我,我会分享。
非常感谢!非常感谢您的帮助!
编辑:我正在添加 Angular 代码来帮助
$scope.createDepense = function (newDepenseForm) {
if (!newDepenseForm.$valid) {
$scope.displayValidationError = true;
return;
}
$scope.lastAction = 'create';
var url = $scope.url;
var config = {headers: {'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'}};
$scope.addSearchParametersIfNeeded(config, false);
$scope.startDialogAjaxRequest();
debugger;
$http.post(url, $.param($scope.depense), config)
.success(function (data) {
$scope.finishAjaxCallOnSuccess(data, "#addDepensesModal", false);
})
.error(function(data, status, headers, config) {
console.log(headers);
console.log(config);
console.log(status);
console.log(data);
debugger;
$scope.handleErrorInDialogs(status);
});
};
还有我的模特:
import java.sql.Timestamp;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
@Entity
public class Depenses {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name="id_fact")
private int idFact;
@Column(name="date_eff")
private Timestamp dateEff;
etc...
这是我更新记录的时候(PUT,工作) working $http.PUT with date changed
并且 $http.POST 不工作 not working $http.POST
也试过了,但没有成功
@Column(name="date_eff")
@Temporal(TemporalType.TIMESTAMP)
private Date dateEff;
【问题讨论】:
-
您是否将数据作为字符串发送?作为日期?在后端服务器期望什么样的类型?如果您的 POST 在不同的上下文中工作,则可能是数据格式问题。
-
是的,它似乎与数据格式有关。数据库字段是“日期时间”。正如我在调试 Angular 时看到的那样,在 $scope 中,POST 时的数据是字符串(在双引号之间)。
-
非常感谢,您的问题在“格式”路径上发送给我!它帮助很大
标签: mysql angularjs spring hibernate http