我使用$('#myForm').submit
提交表单我的其他服务接受application/x-www-form-urlencoded
的内容类型,但是当使用submit()时,我无法在浏览器开发人员工具和表单的XHR标签中看到该请求参数没有到达Rest服务,我可以使用AJAX post并指定content-type,但是Rest服务产生八位字节流,换句话说响应包含一个可下载的文件csv / pdf,什么可以是正确提交表单的解决方案?< / p>
答案 0 :(得分:1)
为什么你没有使用$ .ajax()类型:“post”?你可以轻松设置标题
// Request with custom header
$.ajax({
url: 'foo/bar',
type: 'post',
headers: { 'content-type': 'application/x-www-form-urlencoded' },
data: {}, // object of your data
success: function(response){
alert(response)
}
});
如果您的api响应是八位字节流或可下载文件,那么您必须创建虚拟表单并通过jQuery发布它,因为通过AJAX无法下载文件..当文件下载时当前页面的内容将保持不变活动表格已发布。
function autoGenerateAndSubmitForm(method, url, post_data) {
var element = document.getElementById("virtual_form");
if(element != null )
{
element.parentNode.removeChild(element);
}
var form = document.createElement("form");
form.setAttribute("id", "virtual_form");
form.setAttribute("style", "display:none;");
//form.setAttribute("target", "_blank"); // remove comment if you want to open it in new tab
form.method = method;
form.action = url;
for(i in post_data)
{
var element=document.createElement("input");
element.value=post_data[i];
element.name=i;
form.appendChild(element);
}
document.body.appendChild(form);
form.submit();
form.parentNode.removeChild(form);
}
使用您的poper参数调用以下函数
autoGenerateAndSubmitForm('POST','your_url',{your_post_data_object:"Here"});
答案 1 :(得分:0)
在阅读修改后的问题后,通常如果API中的参数为空,则可能由以下原因引起。