【发布时间】:2017-04-27 12:59:30
【问题描述】:
EDIT2:我正在尝试使用 java 更新我的代码,但它不起作用(我想我错过了控制器中的某些内容):
$(document).ready(function() {
var listGraphic = new Array();
function addPhoto(u, d) {
$.ajax({
url: "aggiungiEpigrafe",
type: "POST",
data: {"graphicUrl": u, "graphicDesc": d},
success: function(data) {
var $url = $("<form:input>").attr({
path: "graphicUrl",
disabled: true
}).html(u);
var $desc = $("<form:input>").attr({
path: "graphicDesc",
disabled: true
}).html(d);
$("#listGraphic").append($url, "<br />", $desc, "<br /><br />");
$(this).dialog("close");
},
error: function(xhr, textStatus, error){
console.log(xhr.statusText);
console.log(textStatus);
console.log(error);
}
});
}
$("button#insertFoto").button().click(function() {
$('#insertPhoto').dialog("open");
return false;
});
$("#newPhoto").submit(function(e) {
e.preventDefault();
var url = $("#graphicUrl").val();
var desc = $("#graphicDesc").val();
listGraphic.push(url);
listGraphic.push(desc);
console.log(listGraphic);
addPhoto(url, desc);
$("#graphicUrl").val("");
$("#graphicDesc").val("");
if ($('#insertPhoto').dialog("isOpen")) {
$('#insertPhoto').dialog("close");
}
});
$('#insertPhoto').dialog({
autoOpen: false,
buttons: {
"Close": function() {
$(this).dialog("close");
},
'Insert': function() {
$("#newPhoto").submit();
}
}
});
});
EDIT1: 按照 Twisty 的建议,我更新了对话框,以便内部没有任何表单(因为此对话框已经在表单中):https://jsfiddle.net/e57sj6hp/18/
正如 Twisty 也评论的那样,我可能需要 ajax,但我必须了解如何使用它;我想我需要使用serialize()或seralizeArray(),但是我不太明白控制器应该如何接收json并使用它。
我有一个这样的控制器:
public String myMethod(@ModelAttribute MyObject object, ModelMap model){...}
该对象包括一个照片列表,以及两个变量url和描述:
List<Photo> photos;
String url;
String description;
列表中的每张照片都由一个 url 和一个描述组成。
在我的 jsp 中,我使用 jquery 创建了一个对话框,用户可以在其中放置 url 和描述,我想要做的是将每个值添加到列表中并将其发送到控制器,然后清理对话框以便允许另一个提交。 我已经尝试了很多,但不明白我应该怎么做。我正在使用弹簧的形式,我尝试了许多不同的方法,但我认为问题出在我的 javascript 代码中。这是一个例子:https://jsfiddle.net/e57sj6hp/12/
在这个例子中,对话框内的输入字段和文本区域没有被 spring 的表单标签包围,因为我已经将结果附加到 div 中,并且我认为,在提交的那一刻,控制器应该收到表单中的数据:刚刚创建的输入。
【问题讨论】:
-
我怀疑您需要使用 AJAX 将
listGraphic发送到您的控制器。其他元素是如何传递或保存到您的控制器的? -
我使用一个对象。我四处寻找,我认为你是对的,但我完全不知道如何继续。我知道我需要 serialize() 或 seralizeArray(),但我不太明白应该如何改进我的代码。
-
我更新了我的答案以反映您的更新。
标签: javascript jquery spring forms jquery-ui