2015-10-15 50 views
0

嘗試在我的表中插入一條新記錄,並且當我想插入時,我總是得到一個錯誤400(錯誤的請求,語法錯誤)與日期字段的行。我測試了從表單中刪除了「日期」字段的POST並且它工作正常。只要我添加這個輸入就會停止工作。這是一個簡單的文本輸入,我使用現有行中的日期(複製/粘貼)來測試它,因爲它可以與$ http.PUT一起使用。

我擁有 '的Content-Type': '應用/的X WWW的形式,進行了urlencoded'

當我更新現有行($ http.PUT)它完美,但當我嘗試創建一個新的沒有。我是新手,我搜索了很多論壇,但我找不到任何正在做我想做的事情的例子。

我不知道提供什麼來幫助你理解,但問我,我會分享。

非常感謝!您的幫助非常感謝!

編輯:我添加角代碼,以幫助

$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; 
+0

您是否將數據作爲字符串發送?作爲日期?在後端服務器期待什麼樣的類型?如果您的POST在不同的環境下工作,它可能是一個數據格式問題。 – wdoering

+1

是的,它似乎與數據格式有關。數據庫字段是「日期時間」。正如我在調試Angular時可以看到的,在$ scope中,數據在POSTing時是String(在雙引號之間)。 –

+0

thx很多,你的問題發送給我的「格式」路徑!它幫助了很多 –

回答

0

終於我找到了!

更改型號:

@Column(name="date_eff", columnDefinition="DATETIME") 
@Temporal(TemporalType.TIMESTAMP) 
private Date dateEff; 

這在.JSP輸入類型= 「文本」 爲:

<input type="date" 
    autofocus 
    ng-model="depense.dateEff" 
    name="dateEff" 
/> 

,瞧!固定!

相關問題