jQuery使用$.post上传文件
jQuery using $.post to upload file
我需要通过jQuery将POST数据发送到我的PHP服务器。这就是我目前收到的(这就是我想要的):
client_id: 55
client_name: 'Josh'
age: '35'
extra: array(0) -> array(['preview'] -> true, ['lookup'] -> false)
为了实现这一点,我有以下代码:
var elements = [];
var listOfExtra = []
listOfExtra.push({'preview': true, 'lookup': false});
elements['client_id'] = 55;
elements['client_name'] = 'Josh';
elements['age'] = 35;
elements['extra'] = listOfExtra;
$.post(url, $.extend({}, elements));
但现在我还需要发送一个用户已经上传的文件,所以通过这样做:
elements['file'] = event.target.files[0];
我在javascript 中收到消息Illegal invocation
由于这不起作用,我尝试实现formData()
:
var formData = new FormData();
formData.append('client_id', 55);
formData.append('client_name', 'Josh');
formData.append('age', 35);
formData.append('extra', listOfExtra);
formData.append('file', event.target.files[0]);
$.ajax(
{
url: url
type: 'POST',
data: formData,
processData: false,
contentType: false
});
现在的情况是,extra
是[object][object]
,这是可以的,所以我只需要字符串化它
formData.append('extra', JSON.stringify(listOfExtra));
现在的问题是,我有很多使用$_POST['extra'][0]['preview']
的代码(例如),现在我需要在之前解码所有代码,并使用很多条件,比如:
$extra = isset(json_decode($_POST['extra'])[0]['preview']);
if($extra != null)
$extraContent = json_decode($_POST['extra'])[0];
$preview = (isset($extraContent) ? $extraContent->preview : $extra[$_POST['extra'][0]['preview']);
有没有什么方法可以通过使用formData()
或$.post
来保持从javascript发送到PHP的值,就像我想要的那样并发送文件?
一个简单的方法是,不使用jQuery,而只使用
var xhr = new XMLHttpRequest();
xhr.send(formData);
它应该做所有正确的事情,但只适用于现代浏览器(不知道你是否也需要旧的浏览器)。有关兼容性,请查看http://caniuse.com/#feat=xhr2
已解决。
我再次将解码的JSON值转换为正常的$_POST
。
$extraContent = json_decode($_POST['extra'])[0];
foreach($extraContent as $key => $extra)
$_POST[$key] = $extra;
相关文章:
- 如何使用WCF服务和javascript表单post上传.doc文件
- 如何在php文件中获取$.post-ajax传递的值
- 如何使用post方法从方法上传文件
- AJAX不会在文件上传后重定向到网页-POST方法
- 下载使用POST数据动态生成的文件
- javascript:发送带有音频文件的POST,然后重定向到新页面
- jQuery使用$.post上传文件
- 如果($_SERVER[“REQUEST_METHOD”]=“POST”)条件在ajax调用不同的php文件进行验证和提
- 如何在ajax文件上传中添加额外的POST参数
- Ajax POST返回成功,但没有;t更新JSON文件
- 获取从 .post() 到 PHP 文件的响应,但只能在 MVC 中获取
- 在 Angular2 中构建多部分/表单数据 POST 请求并验证输入类型文件
- ExtJS 5 - 从 POST servlet 请求下载文件
- 如何使用AJAX将数据POST到php文件
- AJAX请求php获取post/get发送的指定目录中服务器上的文件列表(无JQUERY)
- 我无法以某种方式在数据库中POST文件
- $.post-to-php文件在AmazonEC2中没有'似乎不起作用
- 如何使用Angular将JSON和文件POST到web服务
- 隐藏表单文件POST在javascript
- 如何使用javascript将blob作为文件POST