2016-02-01 30 views
0

我有一些形式的模式,我創建對象存儲到數據庫中。 在這些形式中我有一個選擇場這樣的:HTML通過ajax選擇字段調用Web服務

<div class="form-group" id=existingUser> 
    <label>Username</label> <select class="form-control select2" 
     style="width: 100%;" th:field="*{user}"> 
     <option th:each="user: ${users}" th:value="${user.username}" 
      th:text="${user.username}"></option> 
    </select> 
</div> 

,用戶從控制器通過與模型。使用這種方法,我必須更新所有頁面以刷新選擇字段中的值,否則我只能更新表格,在其中顯示新創建的對象,但我不能在select中使用新字段。 的問題是性能和外觀清爽的頁面,而且我不能使用這些指令顯示我的消息

location.reload(); 
//reload only the tag with id carsTable, so only the table 
//$('#carsTable').load(document.URL + ' #carsTable'); 
$('#addCarModal').modal("hide"); 
notifyMessage("Your car has been created!", 'success'); 

function notifyMessage(textMessage, typeMessage){ 
    $.bootstrapGrowl(textMessage, { 
     type: typeMessage, // (null, 'info', 'error', 'success') 
    }); 
} 

有沒有一種方法來調用Ajax時模式被稱爲?或者我可以將數據從JavaScript傳遞給HTML(如果我在點擊添加按鈕時檢索值)。 有時我也檢查是否選擇字段是空的,在這種情況下顯示在模式內的消息而不是形式。感謝

UPDATE。我thouth這段代碼:我在html頁面

function freeUserController($scope) { 
    $http.get("https://localhost:8080/users/") 
    .success(function(data) { 
     $scope.users = data;   
    }); 
} 

要開始只有成功管理

<div ng-controller="freeUserController" class="form-group" id=existingUser> 
    <label>Username</label> <select class="form-control select2" 
     style="width: 100%;" name="user"> 
     <option ng-repeat="user in users" value="{{user.username}}"> 
     {{user.username}}</option> 
    </select> 
</div> 

回答

0

我假設你正在渲染服務器上的HTML。可能沒有辦法讓它重新渲染那個元素。但是,有多種方法可以做到這一點:

一,您可以開始使用客戶端MVC /渲染像Angular.js。這樣,您可以在添加新字段時自動刷新選擇字段。

二,您可以將新選項放入選擇字段而不使用MVC系統。這需要將數據從視圖中分離出來,所以我不會推薦它。但是,您可以可能有提交按鈕執行ajax調用,以確保服務器反應正常,並且只有當服務器響應已到達時添加新選項。你的代碼看起來是這樣的:

$.ajax(url).done(function(){ 
    $('#my-select').append('<option>').html('your data') 
}).fail(function(){ 
    // show error message... 
}); 
+0

解決方法可能是使用JavaScript來編寫HTML,如你的例子,但我會有很多回復的代碼。 我從來沒有使用angularjs,但我知道它可以創建一個動態綁定,我可以插入ajax調用到angularjs控制器? – luca

+0

是的,AngularJS有很多AJAX功能。它甚至有它自己的AJAX函數包裝:https://docs.angularjs.org/api/ng/service/$http – KWeiss

+0

我更新可能的代碼來刷新選擇字段,這是正確的方式?它如何知道什麼時候刷新? – luca