2013-07-09 67 views
1

我有以下方法,其目的是使用不可见的形式提交发布请求。这个请求是下载一个文件,它没有一个URL,但动态地从二进制文件存储中获取。服务器端是Java Servlet。正在下载文件?

function postCall(url, params) { 
    var newForm = jQuery('<form>', { 
      'method':'POST', 
      'action': url 
     }); 

    for(key in params) { 
     if (params.hasOwnProperty(key)) { 
      newForm.append(jQuery('<input>', { 
       'id': key, 
       'value': params[key], 
       'type': 'hidden' 
      })); 
     } 
    } 

    newForm.submit(); 
} 

当调用此方法时,服务器端未收到请求。我认为这段代码一定有问题。

+3

@Nix''

创建一个新的表单元素,而不尖括号它只是选择所有现有的表单...这不是他想要的 – Esailija

+0

在提交之前不应该将表单附加到页面上吗? – epascarello

回答

7

只有带有name的输入才会提交给服务器。试试这个:

newForm.append(jQuery('<input>', { 
    'name': key, //<-- change to name instead of id 
    'value': params[key], 
    'type': 'hidden' 
})); 

另外,IE浏览器,还必须在提交表单之前附加到文件:

newForm.appendTo("body").submit(); 
+0

工作。非常感谢! – Kevin