Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/262.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 无法在php中获取过帐的FormData_Javascript_Php_Jquery_Ajax_Form Data - Fatal编程技术网

Javascript 无法在php中获取过帐的FormData

Javascript 无法在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')

我试图在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').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”!让我知道这是否有效!你为什么发布第二个答案?你可以编辑你的旧版本!是的,我忘了!我将删除旧的一个。