我正在使用 springsource 工具套件中的 grails,并且在更新 SQL 数据库时遇到问题。在页面中,要求用户输入他的财产的详细信息,比如地址、城市等,一旦单击“保存”按钮,需要将详细信息保存在数据库中。现在我需要做的是,每次用户单击“添加”按钮时,将输入字段(地址、城市等)动态添加到页面。所以正因为如此,我需要使用 AJAX 将数据发布到服务器。但是,我无法更新它。这是视图的代码(.gsp 文件)-
<head>
<script type="text/javascript">
var rad1, rad2, button1, button2;
function add() {
var newP = document.createElement("p");
var input1, input2,
area = document.getElementsByTagName("form")[0];
input1 = document.createElement("input");
input1.type = "text";
input1.placeholder = "street";
input1.id = "address";
newP.appendChild(input1);
input2 = document.createElement("input");
input2.type = "text";
input2.placeholder = "city";
input2.id = "city"
newP.appendChild(input2);
area.appendChild(newP);
}
</script>
</head>
<body>
<form name='prop' method="post" action="save">
<g:hiddenField name="owners.id" value="${session.user.id }" />
<input type="button" value="+Add" onclick= "add();" ><br>
<input type="button" name="create" id="save_button" class="save" value="save" />
</form>
<script type="text/javascript" src="ajax.js"></script>
</body>
这是我的 Ajax 代码在单独的 ajax.js 文件中的样子 -
$('#save_button').click(function() {
var street = $('#address').val();
var city = $('#city').val();
$.ajax({
type: "POST",
url: "${createLink(controller: 'property', action: 'save')}",
data: { address: street, city: city },
success: function(data) {
alert(data);
}
});
});
这是我的属性控制器中的代码(保存操作)-
def save = {
def propertyInstance = new Property(params)
if (propertyInstance.save(flush: true)) {
flash.message = "Property successfully added."
redirect(controller:"user", action: "show", id:params.owners.id)
}
else {
render(view: "create", model: [propertyInstance: propertyInstance, id:params.owners.id])
}
}
我在这里做错了什么?我对 Ajax 一点也不熟悉,如果这是一个明显的错误,我很抱歉。请帮忙。