[英]How do you send a raw strings through a jQuery POST request?
我试图通过jQuery.ajax()发布一个原始字符串
例如,
contact_list=352345
我有
$.ajax({
beforeSend: function(xhr){
xhr.setRequestHeader('Content-Type', header);
}
},
url: link,
type: type,
processData:false,
data: data,
success: function(data){
console.log(data);
}
});
大多数时候我发送JSON数据,所以header='application/json'
在服务器端,我回显$HTTP_RAW_POST_DATA
并看到我的JSON字符串就好了。
但是,我有时也希望发送正常的表单数据。 但是当我设置header='application/x-www-form-urlencoded'
$HTTP_RAW_POST_DATA
为空。
ProcessData
是false,所以它不应该只是通过我的字符串?
作为临时解决方法,我只是将标题保留为application/json
并忽略服务器上针对此特定端点的Content-Type
。
无需额外的工作。 尝试这个:
$.ajax({
url: link,
data: data,
success: function(data){
console.log(data);
}
});
docs :
processDataBoolean:
默认值:true默认情况下,作为对象传入数据选项的数据(技术上,不是字符串)将被处理并转换为查询字符串,适合默认内容类型“application / x-www-form -urlencoded”。 如果要发送DOMDocument或其他未处理的数据,请将此选项设置为false。
我宁愿发送一个标志到我的javascript函数,看看有什么样的输入
所以你的功能看起来像这样
function processIt(request_type,link,type,data) {
if(request_type == 'json')
$.ajax({
beforeSend: function(xhr){
xhr.setRequestHeader('Content-Type', header);
}
},
url: link,
type: type,
processData:false,
data: data,
success: function(data){
console.log(data);
}
});
else
$.ajax({
url: link,
data: data,
success: function(data){
//do something
}
});
}
但是,如果您想要使用您的功能,那就是这样。
PHP $HTTP_RAW_POST_DATA
不适用于enctype =“multipart / form-data”。 http://www.php.net/manual/en/ini.core.php#ini.always-populate-raw-post-data
所以,现在在服务器上我做了以下事情:
if (count($_POST == 0){
$raw = file_get_contents('php://input');
}else{
$raw = '';
foreach($_POST as $key => $value) {
$raw = $raw.$key.'='.$value.'&';
}
}
似乎工作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.