我使用此代码提交表单
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
关于Javascript:提交表单指定内容类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27501582/