admin管理员组文章数量:1415145
I am trying to POST a raw string via jQuery.ajax()
e.g.,
contact_list=352345
I have
$.ajax({
beforeSend: function(xhr){
xhr.setRequestHeader('Content-Type', header);
}
},
url: link,
type: type,
processData:false,
data: data,
success: function(data){
console.log(data);
}
});
Most of the time I am sending JSON data, so header='application/json'
On the server side, I echo $HTTP_RAW_POST_DATA
and see my JSON string just fine.
However, I sometimes want to send normal form data too. But when I set header='application/x-www-form-urlencoded'
$HTTP_RAW_POST_DATA
is empty.
ProcessData
is false, so shouldn't it just pass my string on through?
As a temporary workaround I'm just leaving the header as application/json
and ignoring the Content-Type
on the server for this particular endpoint.
I am trying to POST a raw string via jQuery.ajax()
e.g.,
contact_list=352345
I have
$.ajax({
beforeSend: function(xhr){
xhr.setRequestHeader('Content-Type', header);
}
},
url: link,
type: type,
processData:false,
data: data,
success: function(data){
console.log(data);
}
});
Most of the time I am sending JSON data, so header='application/json'
On the server side, I echo $HTTP_RAW_POST_DATA
and see my JSON string just fine.
However, I sometimes want to send normal form data too. But when I set header='application/x-www-form-urlencoded'
$HTTP_RAW_POST_DATA
is empty.
ProcessData
is false, so shouldn't it just pass my string on through?
As a temporary workaround I'm just leaving the header as application/json
and ignoring the Content-Type
on the server for this particular endpoint.
- What is really boggling my mind, is that in the network inspector it looks like the request payload went through properly. e.g., contact_list=352345 is there... Maybe this is a PHP thing and form data doesn't show up in $HTTP_RAW_POST_DATA? – speg Commented Feb 5, 2012 at 14:46
3 Answers
Reset to default 1I would rather send a flag to my javascript function to see what sort of input
so your function will look like this
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
}
});
}
But that's if you want to use your function as it is.
No extra work needed. Try this:
$.ajax({
url: link,
data: data,
success: function(data){
console.log(data);
}
});
docs:
processDataBoolean:
Default: true By default, data passed in to the data option as an object (technically, anything other than a string) will be processed and transformed into a query string, fitting to the default content-type "application/x-www-form-urlencoded". If you want to send a DOMDocument, or other non-processed data, set this option to false.
PHP $HTTP_RAW_POST_DATA
is not available with enctype="multipart/form-data". http://www.php/manual/en/ini.core.php#ini.always-populate-raw-post-data
So, now on the server I do the following:
if (count($_POST == 0){
$raw = file_get_contents('php://input');
}else{
$raw = '';
foreach($_POST as $key => $value) {
$raw = $raw.$key.'='.$value.'&';
}
}
Seems to be working.
本文标签: javascriptHow do you send a raw strings through a jQuery POST requestStack Overflow
版权声明:本文标题:javascript - How do you send a raw strings through a jQuery POST request? - Stack Overflow 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/web/1745208692a2647761.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论