Javascript 无法在php中获取过帐的FormData
我试图在PHP中使用posted FormData表单进行AJAX调用,但无法检索变量。 我做错了什么 这是我的JavascriptJavascript 无法在php中获取过帐的FormData,javascript,php,jquery,ajax,form-data,Javascript,Php,Jquery,Ajax,Form Data,我试图在PHP中使用posted FormData表单进行AJAX调用,但无法检索变量。 我做错了什么 这是我的Javascript var sendData = new FormData(); sendData.append('itemid',$('select#selectItems').val()); sendData.append('itemtitle',$('#item-title').val()); sendData.append('itemtext',$('#item-text')
var sendData = new FormData();
sendData.append('itemid',$('select#selectItems').val());
sendData.append('itemtitle',$('#item-title').val());
sendData.append('itemtext',$('#item-text').val());
$.ajax({
url: 'ajax.file.php',
type: 'POST',
dataType: 'text',
data: sendData,
cache: false,
contentType: false,
processData: false
});
还有我的PHP
$itemid = $_POST['itemid'];
echo $itemid;
在PHP中总是未定义的
如果我打印_r($_POST)
如果我使用Firefox,PHP文本是:
数组([------------------------------------12850217581176488271638880149内容处置:-表单数据;-名称]=>“itemid”99------------------------------------------12850217581176488271638880149内容处置:表单数据;name=“itemtile”标题------------------------------------------12850217581176488271638880149内容处置:表单数据;name=“itemtext”文本--------------------------------------------12850217581176488271638880149--)
…使用Chrome,PHP响应为:
数组([----WebKitFormBoundarypyFlwBB31gVYXxRP内容配置:\\表单数据;\\名称]=>“itemid”99----WebKitFormBoundarypyFlwBB31gVYXxRP内容配置:表单数据;name=“itemtitle”标题----WebKitFormBoundarypyFlwBB31gVYXxRP内容配置:表单数据;name=“itemtext”文本----WebKitFormBoundarypyFlwBB31gVYXxRP--)
谢谢试试这个:
$.ajax({
.
.
发送前:函数(xhr){
setRequestHeader('Content-Type','application/json');
}
.
.
});代码>看来您的jQuery已经过时了。
检查jQuery版本,因为您在ajax请求构造函数中使用的一个重要参数processData可从版本1.6获得
从jQuery1.6开始,您可以传递false来告诉jQuery不要设置任何内容类型头
要执行此操作,请打开浏览器控制台并输入:
jQuery.fn.jquery
我有jQuery 1.4,这段代码适合我:
var file = $('.rm-action-popup-input[name=file]').attr('files')[0];
var formData = new FormData();
formData.append('file', file);
formData.append('title', params.title);
var xhrForm = new XMLHttpRequest();
xhrForm.open("POST", "/upload.php");
xhrForm.send(formData);
检查内容类型标题的外观:
我也有同样的问题。当我没有设置Content-Type属性(我使用javascript)时,它起作用了
浏览器随后显示(在使用Chrome调试的请求标头中):
内容类型:多部分/表单数据;边界=----WebKitFormBoundarygfXi4NfQAXa8g7PU
一个var_dump($_POST)告诉我我想要什么:
数组(2){[“user”]=>string(4)“test”[“pwd”]=>string(7)“testpwd”}我使用fetch来解决它
const选项={
方法:“POST”,
正文:formData,
};
获取('/API',选项)。然后(函数(resp){
控制台日志(resp);
如果(分别正常){
resp.json().then((数据)=>{
控制台日志(数据);
if(data.error){
}否则{
控制台日志(数据);
}//好的
});
}否则{
log('Respuesta de red OK pero Respuesta HTTP no OK');
}
}).catch(函数(错误){
log('Hubo un problema con la petición Fetch:'+error.message);
});代码>能否尝试插入select#selectItems的硬代码,看看会发生什么?例如,放置“sendData.append('itemid',('testValue').val());”?您是否通过ajax发布任何文件输入?不,我没有发布任何内容else@djbhindi是,但没有成功尝试注释数据类型:“text”!让我知道这是否有效!你为什么发布第二个答案?你可以编辑你的旧版本!是的,我忘了!我将删除旧的一个。