2013-11-22 78 views
0

我需要能夠做到形式上傳與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

任何客戶端或服務器錯誤?它是否進入這個代碼? –

+0

是的,單擊按鈕時會調用該方法。它基本上顯示了一個模態對話框,然後呈現表單上傳 – xybrek

回答

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 + "/的URL可能沒有發送回一個成功代碼,所以成功的回調可能不會被在全稱爲 - 一定要設置失敗回調。