如何用xmlhttp请求发送原始文本
How to send raw text with xmlhttp request?
我试图使用ajax将textarea
字段的文本发送到PHP文件,文本包含HTML字符,不应编码。
使用FormData
,它可以完美地工作,但它不支持ie9和更早的版本!我试图通过将requestHeader
设置为text/plain;charset=UTF-8;
或multipart/form-data
来发送数据作为string
,但它不起作用!我使用的代码是:
var string = '<td clas="tdClass">some text<?php echo $contents; ?></td>';
var data = new FormData();
data.append("data" , string);
var xhr = (window.XMLHttpRequest) ? new XMLHttpRequest() : new activeXObject("Microsoft.XMLHTTP");
xhr.open( 'post', '/path/to/php', true );
xhr.send(data);
在ie9中有什么替代方法可以做到这一点?
是的,可以这样修改headerRequest
和data
:
var xhr = (window.XMLHttpRequest) ? new XMLHttpRequest() : new activeXObject("Microsoft.XMLHTTP");
if(typeof(FormData) == 'undefined'){
var boundary = '---------------------------' + (new Date).getTime(),//boundary is used to specify the encapsulation boundary of a parameter
data = "--" + boundary + "'r'n";
data += 'Content-Disposition: form-data; name="data"'r'n'r'n';//here we specify the name of the parameter name (data) sent to the server which can be retrieved by $_POST['data']
data += string + "'r'n";
data += "--" + boundary + "--'r'n";
xhr.open( 'post', 'writeCode.php', true );
xhr.setRequestHeader('Content-Type', 'multipart/form-data; boundary=' + boundary);
}else{
var data = new FormData();
data.append("data", string);
xhr.open( 'post', 'writeCode.php', true );
}
xhr.send(data);
如果使用FormData
对您来说是正确的,那么在您不能使用它的情况下,实际上您需要做的就是将最后一行替换为:
xhr.send("data="+encodeURIComponent(string));
我认为其他的回答是困惑的,你要求文本"不编码"。表单数据通常被编码为通过HTTP发送,但是当到达服务器时,PHP会对进行解码,完全透明地:您得到的完全是原始文本,无论它可能包含什么特殊字符。(假设您将PHP字符串解释为UTF-8)。
因此,按照您的示例,如果PHP文件包含:$data = $_POST['data'];
那么PHP $data
变量的内容将是字符串'<td clas="tdClass">some text<?php echo $contents; ?></td>'
。这与使用FormData
方法是一样的。
因为,嗯,它看起来毕竟很简单。这里有一些样品。
只是随机发布文本
// just text
var dest = "http://requestb.in/qwb9y3qw";
var xhr = new XMLHttpRequest();
xhr.open("POST", dest, true);
var myText = "foobar";
xhr.send(myText);
Post一个JSON对象
// post json
var dest = "http://requestb.in/1908jrv1";
var xhr = new XMLHttpRequest();
xhr.open("POST", dest, true);
var myObject = {};
myObject.prop1 = "foo";
myObject.prop2 = "bar";
xhr.send(JSON.stringify(myObject));
相关文章:
- 从ajax请求中获取原始文本
- jQuery 获取原始文本(未转义),以便通过下划线模板进一步解析
- 返回文本区域的原始上下文菜单
- 如何使用jQuery获取原始状态文本
- jquery下拉菜单修改所选文本,但在后续单击时显示先前所选文本的原始值
- 获取可编辑
的原始文本/值 - 如何使用 jQuery 将段落的原始文本格式放入 HTML 段落元素中
- 使用 js 或浏览器的本机脚本直接发送原始文本
- 可编辑元素,覆盖不起作用的原始文本(x-Editable)
- 主干js原始文本发布
- 将tinyMCE内容替换为原始文本
- 复选框 - 选中添加文本,取消选中删除文本区域中的原始文本
- Javascript - 双击后将文本更改回原始文本
- 如何在使用微软翻译api翻译后恢复原始文本?
- 获取HTML元素的完整(和原始)文本
- 文本区域应该得到复制到另一个文本区域和原始文本区域应该清除按钮点击使用javascript
- 文本从一个文本区域应该得到复制到另一个文本区域和原始文本区域应该清除按钮点击使用javascript
- 如何用xmlhttp请求发送原始文本
- jQuery记住多个focusin事件的原始文本框值
- 如何使程序恢复到原始文本,而无需重新键入它