我正在尝试在 PHP 中使用发布的 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 中始终未定义!
如果我 print_r ($_POST);
如果我使用 Firefox,PHP 文本为:
Array ( [-----------------------------12850217581176488271638880149 Content-Disposition:_form-data;_name] => "itemid" 99 -----------------------------12850217581176488271638880149 Content-Disposition: form-data; name="itemtitle" The Title -----------------------------12850217581176488271638880149 Content-Disposition: form-data; name="itemtext" The Text -----------------------------12850217581176488271638880149-- )
...使用 Chrome 时,PHP 响应为:
Array ( [------WebKitFormBoundarypyFlwBB31gVYXxRP Content-Disposition:_form-data;_name] => "itemid" 99 ------WebKitFormBoundarypyFlwBB31gVYXxRP Content-Disposition: form-data; name="itemtitle" The Title ------WebKitFormBoundarypyFlwBB31gVYXxRP Content-Disposition: form-data; name="itemtext" The Text ------WebKitFormBoundarypyFlwBB31gVYXxRP-- )
谢谢
最佳答案
我也遇到了同样的问题。当我没有设置 Content-Type 属性时(我使用了 javascript),它起作用了。
然后浏览器显示(在使用 Chrome 调试的请求 header 中):
内容类型:多部分/表单数据;边界=----WebKitFormBoundarygfXi4NfQAXa8g7PU
并且 var_dump($_POST) 向我展示了我想要的内容:
数组(2){[“用户”]=>字符串(4)“测试”[“密码”]=>字符串(7)“测试密码”}
关于javascript - 无法在 php 中获取已发布的 FormData,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24419350/