我需要能够使用GWT进行表单上传而无需重定向或刷新页面,但是我的代码不再重定向,它仍然刷新并且警报框不会弹出:
public static native void showUploadModal(String title, String hash)/*-{
var target = '/files/" + hash + "/';
$wnd.$("<div></div>")
.html("<form id='form_upload' action='' method='post' enctype='multipart/form-data'><p>Select a file: <input type='file' name='file'/></p><input type='submit' id='form_submit' value='Attach'></form>")
.appendTo("body")
.dialog({
title: title,
modal: true,
width: 400,
hide: "fade",
show: "fade",
buttons: {
"Cancel": function() {
$wnd.$(this).dialog("close");
}
}
});
$wnd.$('#form_submit').submit(function() {
// the script where you handle the form input.
var url = '/files/" + hash + "/';
$wnd.$.ajax({
type: "POST",
url: url,
data: $wnd.$('#form_upload').serialize(), // serializes the form's elements.
success: function(data)
{
alert(data); // show response
}
});
return false; // avoid to execute the actual submit of the form.
});
}-*/;
这段代码有什么问题?
答案 0 :(得分:1)
这里有一些细节有点奇怪:
var target = '/files/" + hash + "/';
var url = '/files/" + hash + "/';
这两行将其变量的值设置为/files/" + hash + "/
,包括+
和文本hash
,而不是变量的值。可能不是你的想法。 target
变量似乎未被使用,但url
是。
下一步:
alert(data); // show response
相反,您可能意味着$wnd.alert(data);
最后,像http://server.com/files/" + hash + "/
这样的网址可能没有发回成功代码,因此可能根本没有调用成功回调 - 请务必设置故障回调。