陈烁临
陈烁临
  • 发布:2014-09-04 17:33
  • 更新:2017-11-24 12:09
  • 阅读:13910

plus.net.XMLHttpRequest()post 请求时怎么传值??

分类:HTML5+

post请求是怎么给send()里面传值,手册上没有找到,

2014-09-04 17:33 负责人:无 分享
已邀请:
DCloud_App_Array

DCloud_App_Array

send方法定义如下:
void send( body );
其中body参数就是要发送到服务器的数据,类型为String,示例如下:

var xhr=new plus.net.XMLHttpRequest();  
xhr.onreadystatechange=function(){  
	console.log('onreadystatechange: '+xhr.readyState);  
};  
xhr.open( ‘POST’, ‘http://demo.dcloud.net.cn/test/xhr/’ );  
xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');  
xhr.send('user=HBuilder&test=value');

其中body参数可以是任何格式,只要服务器能支持即可,通常为了方便服务器处理,使用key=value格式来提交数据,多个值使用&符号分割。

  • 海带

    2014年问的问题 ,我现在也遇到了,调试发现 服务端确实获取不到值


    2018-03-24 20:55

伟子

伟子

xhr.send("IMEI="+IMEI+"&history="+JSON.stringify(temp));

伟子

伟子

好奇怪,我用离线打包,应用就发不出网络请求了,求解。

DCloud_App_Array

DCloud_App_Array

请确认应用manifest.json文件的"permissions"字段中包括以下节点:
"XMLHttpRequest": {
"description": "跨域网络访问"
}

  • feeloc

    我用的是官方的例子,是有这个权限的,本地编译,在安卓上OK,到ios上就出错,到2就结束请求了


    2014-09-23 12:40

  • DCloud_App_Array

    尝试使用云端App打包是否存在此问题?

    更新到最新的SDK示例代码,如果还有问题请把离线工程发给我们确认。


    2014-09-23 19:29

mis

mis - 前端攻城

有办法实现多少毫秒后中断请求的方法么?

  • DCloud_App_Array

    XHR对象有abort方法可取消请求


    2015-04-21 15:56

  • mis

    谢谢,已经弄好了。


    2015-04-29 19:48

StefenTang

StefenTang

var xhr=new plus.net.XMLHttpRequest();  
			xhr.onreadystatechange=function(){  
			    console.log('onreadystatechange: ' xhr.readyState);  
			 };  
			xhr.open( 'POST','http://localhost/admin/resources/connector');  
			xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');  
			xhr.setRequestHeader('Accept','application/xml');  
			xhr.send(JSON.stringify(postdata));

日志如下,这样算成功了吗?
[LOG] : onreadystatechange: 1
[LOG] : onreadystatechange: 2
[LOG] : onreadystatechange: 4

  • DCloud_App_Array

    从日志上看是不成功的,可能是设置Content-Type为“application/x-www-form-urlencoded”,而实际传输却是JSON字符串导致服务器处理不了。

    当onreadystatechange事件触发readyState为4时,判断xhr.status值是否为200


    2015-05-08 18:23

  • StefenTang

    提交xml数据目前已经解决,需要通过手动拼接xml格式,注意一定要加上换行符“\r\n”


    2015-05-09 19:20

StefenTang

StefenTang

现在碰到一个棘手的问题,当我把ajax post 提交直接写在页面刷新时就触发是可以的,而当我用button onclick或者switch toggle触发时却碰到了status 0 的问题,求大侠帮忙!

  • DCloud_App_Array

    这个应该跟触发的地方无关,请把完整的demo页面发出来。


    2015-05-11 11:50

StefenTang

StefenTang

下面是demo,我在小米4上可以用onclik触发,而我用三星s4(android 4.4.2)和iphone6(ios8.0.3)还是老样子,哎被这个问题折腾死了。

<!DOCTYPE html>  
  
<head>  
	<meta charset="utf-8">  
	<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />  
	<title></title>  
	<script src="js/mui.min.js"></script>  
	<link href="css/mui.min.css" rel="stylesheet" />  
</head>  
  
<body>  
<!--如果在这里触发就出status:0的问题-->  
<h3 class="text-left" onclick="AiLink()"><span class="mui-btn mui-btn-success">  
								绿色  
							</span></h3>  
</body>  
<script>  
	mui.init({  
		swipeBack: false  
	});  
	//AiLink();如果这里放开,页面刷新的时候就执行了。。。  
	function AiLink() {  
		postdata =  "<sensor>\r\n"+  
					"   <name>TestSensor</name>\r\n"+  
					"   <attribute>\r\n"+  
					"      <name>TestSwitch</name>\r\n"+  
					"      <moment>\r\n"+  
					"          <timestamp1>2015-05-09 00:25:56.036</timestamp1>\r\n"+  
					"          <value>true</value>\r\n"+  
					"      </moment>\r\n"+  
					"   </attribute>\r\n"+  
					"</sensor>";   
		mui.ajax({   
			type: "post",  
			url: "http://api.ailink.com/cs-ws/resources/connector/?apikey=1234&device_name=TestDevice",  
			data: postdata,  
			contentType: "application/xml",  
			success: function(result) {  
				result = JSON.stringify(result);  
				alert(result);  
			},  
			error: function(xhr, type, errorThrown) {  
				//异常处理;  
				console.log(JSON.stringify(xhr));  
			}  
		});  
	}  
</script>
沸腾沸

沸腾沸

使用post请求一个一个远程html会返回404,使用get方式只能获取html页面的部分数据,请问是什么原因造成的,该如何解决

  • DCloud_App_Array

    请详细说明设备及平台版本等相关信息,并给出重现此问题的demo及操作步骤。


    2016-03-07 15:27

reallow

reallow

参考http://ask.dcloud.net.cn/article/763?item_id=5825 解决了POST的情况,在mui.ajax 和plus.net.XMLHttpRequest()中都可以使用,关键在xhr.setRequestHeader('Content-Type','application/json');和php端不能使用常规的_POST[],

n***@163.com

n***@163.com

xhr.send(JSON.stringify(postdata));这种形式后台是获取不到postdata数据的为啥?

该问题目前已经被锁定, 无法添加新回复