我正在尝试使用以下内容发出PUT请求,并且它在localhost上运行正常但是一旦我尝试在我的域上运行它就显示为空。我已检查过localhost和共享服务器上的PHP版本是否相同。我查了一下并确保allow_url_fopen=On
。基本上这是不起作用的部分。我试图通过以下parse_str(file_get_contents('php://input'), $_PUT);
从'php:// input'获取PUT请求的主体,并返回空。此外,当我检查文件是否存在file_exists('php://input')
时,它表示该文件不存在。
我读到这些被称为包装器。我试过从不同的变量和文件中读取它但它仍然不起作用。
/ ****************编辑*************** /
var ajax = function(object){
var oo, xhr;
oo = j2.extend({
method: 'get',
credentials: false,
beforesend: {
'Content-Type': 'application/x-www-form-urlencoded'
}
}, object);
if("XMLHttpRequest" in window){
xhr = new XMLHttpRequest();
}
else{
xhr = new ActiveXObject("Microsoft.XMLHTTP");
}
xhr.onreadystatechange = function(e){
if(xhr.readyState === 4){
oo.complete && oo.complete(xhr);
if(xhr.status >= 200 && xhr.status < 300){
oo.success && oo.success(xhr);
}
else if(xhr.status >= 400 && xhr.status < 600){
oo.error && oo.error(xhr);
}
}
else if((xhr.readyState === 3) && (oo.loading)){
oo.loading(xhr);
}
else if((xhr.readyState === 2) && (oo.headers)){
oo.headers(xhr)
}
else if((xhr.readyState === 1) && (oo.received)){
oo.received(xhr);
}
}
xhr.open(oo.method, oo.action, true);
xhr.withCredentials = oo.credentials;
j2.foreach(oo.beforesend, function(v, k){
xhr.setRequestHeader(k, v);
});
xhr.send(oo.data);
};
ajax({ method: 'put', action: 'the url to send the request'
, data: _.data(form) /* function that url encodes the inputs in the form*/
, received: function(){
form.update.disabled = true;
}
, success: function(xhr){
_.process(xhr);
}
, error: function(xhr){
_.process(xhr);
}
, complete: function(){
form.update.disabled = true;
}
});