使用jQuery(GWT)上传表单

时间:2013-11-22 02:19:41

标签: java javascript jquery gwt jsni

我需要能够使用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.
        });         
    }-*/; 

这段代码有什么问题?

1 个答案:

答案 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 + "/这样的网址可能没有发回成功代码,因此可能根本没有调用成功回调 - 请务必设置故障回调。