我正在开发一个Web应用程序,该应用程序应该使用ajax连接到数据库并具有基本的CRUD功能。除了更新,一切正常。在选择数据库条目时,我希望它使用javascript预先填充输入框和现有数据。
$(document).ready(function() {
$.ajax({
url : '/animal',
method : 'GET'
}).then(function(animals) {
for (var i = 0; i < animals.length; i++) {
var animal = animals[i];
var row = '<option value="' + animal.animalId + '">'
+ animal.commonName
+ '</option>';
$("#animals").append(row);
}
});
$.ajax({
url : '/food',
method : 'GET'
}).then(function(foods) {
for (var i = 0; i < foods.length; i++) {
var food = foods[i];
var row = '<option value="' + food.foodId + '">'
+ food.foodName
+ '</option>';
$("#foods").append(row);
}
});
$("#animals").change(function() {
$.ajax({
url : '/animal/' + $("#animals").val(),
method : 'GET'
}).then(function(task) {
console.log($("#animals").val());
$("#cName").val(animals.commonName);
$("#sName").val(animals.sciName);
$("#food").val(animals.foodId);
$("#infoLink").val(animals.infoLink);
});
});
$("#submit").click(function() {
var animal = {};
animals.commonName = $("#cName").val();
animals.sciName = $("#sName").val();
animals.foodId = $("#food").val();
animals.infoLink = $("#infoLink").val();
$.ajax({
url : '/animal/' + animals.animalId,
method : 'PUT',
data : JSON.stringify(animal),
contentType : 'application/JSON'
}).then(function() {
window.location.href = "/animal/index";
});
});
});
这是我目前拥有的javascript,我无法弄清楚错误是什么。任何帮助表示赞赏。
答案 0 :(得分:0)
我看到几个问题:
var animal = {}; //You define "animal" here
animals.commonName = $("#cName").val(); //..but use "animals" here to populate the object
animals.sciName = $("#sName").val();
animals.foodId = $("#food").val();
animals.infoLink = $("#infoLink").val();
我建议:
var animal = {
commonName: $("#cName").val(),
sciName: $("#sName").val(),
foodId: $("#food").val(),
infoLink: $("#infoLink").val()
};
在这里
then(function(task) { //Your result is named "task"
console.log($("#animals").val());
$("#cName").val(animals.commonName); //..but you try to use "animals" which is going to be undefined
$("#sName").val(animals.sciName);
$("#food").val(animals.foodId);
$("#infoLink").val(animals.infoLink);
});
});
并确定将task
更改为animals
,或将两个变量名称更改为其他名称。