Javascript:提交表单指定内容类型

标签 javascript jquery forms http content-type

我使用此代码提交表单

var form = $("#some-form");
form.attr("action", url);
form.attr("method", "post");
form.attr('target', '_blank');
form.submit();

问题是发送的请求有 Content-Type: application/x-www-form-urlencoded,它(如提到的 here )编码 \n %0D%0A 形式的文本区域中的字符,在服务器端被解码为 \r\n 并导致很多麻烦。

我想让服务器接收\n,所以我需要另一种内容类型。

所以,问题是:

  • 我应该使用什么内容类型?
  • 我应该如何更改我的 javascirpt 以使用该内容类型?

编辑

我尝试了 enctype="multipart/form-data",但它以相同的方式编码换行符。

最佳答案

使用 xmlHTTPrequest (AJAX)

它是异步的,向页面提交数据。另外,您可以指定标题。\n 应该作为\n 到达带有 AJAX 的服务器。

var request = new XMLHttpRequest;
request.method = "post";
request.open(request.method, [url] , true); //true is asynchronous

//this part here matters. regular form data with charset UTF-8
request.setRequestHeader("Content-type", "application/x-www-form-urlencoded ; charset=UTF-8");
request.setRequestHeader("Connection", "close");

request.onreadystatechange = [trackingfunction]; //You can see which data is returned from the post.

request.send([arg]); //send the post arguments here!

这似乎适用于我的机器。将数据保存到文件中,记事本不会将 \n 注册为换行符。它应该在 LF 转换为 CR LF

LF in saved file in Notepad++

关于Javascript:提交表单指定内容类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27501582/

相关文章:

jquery - 使用 jQuery 克隆在表单输入字段的多维数组中递增键

django vanilla View 使用 CreateView 创建带有 imagefield 的实例

php - 表单提交不发送任何 POST 数据

javascript - VueJS if/else : the else loads first, 然后 if 加载

javascript - 如何修复无法读取未定义的属性 'Latitude'

javascript - 如何查找动态创建的 <style> 元素

PHP、AJAX、MYSQLI、不插入行

javascript - 无法使用 HTML5 PHP 和纯 ajax 上传图像

javascript - 数组到树数据(Ant Design TreeSelect)

jquery - 提交表单后切换提交按钮?