网林
网林
  • 发布:2016-05-02 15:54
  • 更新:2016-05-02 15:54
  • 阅读:1951

setRequestHeader('Content-Type' 无像没效果

分类:HTML5+

HTML代码:
<script type="text/javascript">
function goto(success,error)
{ var xhr = new plus.net.XMLHttpRequest();
var url = 'http://124.172.137.59:8017/1.php';
xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded; charset=UTF-8');
xhr.open('POST',url);
xhr.send('api_name=' + encodeURIComponent('reg') + '&phone=' + encodeURIComponent('13555566778'));
xhr.onreadystatechange = function()
{
var data = {};
if(xhr.readyState == 4 && xhr.status == 200)
{
alert('=' + xhr.responseText + '=');
}
};
}
</script>
<button onclick="goto()">测试</button>

PHP代码:
function _post($name){
if(filter_has_var(INPUT_POST,$name)){
return $_POST[$name];
}else{
return '';
}
}

$api_name = _post('api_name');
if($api_name != '')
{
echo 'ok';
}else
{
echo 'err ' . $GLOBALS['HTTP_RAW_POST_DATA'];
}

也就是说:用$_POST['参数名'] 获取不到值,但用$GLOBALS['HTTP_RAW_POST_DATA'] 能获取到
以下内容是百度搜索结果说的:
在通过POST方式向服务器发送AJAX请求时最好要通过设置请求头来指定为application/x-www-form-urlencoded编码类型。知道通过表单上传文件时必须指定编码类型为"multipart/form-data"。ajax.setRequestHeader("content-type","application/x-www-form-urlencoded")表示将请求中的内容,按照UTF-8的方式进行编码,只针对POST请求有效,设置此内容是为了确保服务器知道实体中有参数变量,注意: 请求体格式和请求头的Content-Type类型必须保持一致,如果1的格式,设置Content-Type是application/json,或者2的格式,设置Content-Type是application/x-www-form-urlencoded,后台接收到的请求提都会是空的

2016-05-02 15:54 负责人:无 分享
已邀请:

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