我有一个表单,我使用jQuery $.post
方法发送到服务器。我发送了几个字段,如:
var myName = "Pedro";
var myDescription = "Description of Pedro";
$.post("~/insert_user", { name: myName, description: myDescription }, function(data){
alert("Successfully inserted " + data.name + " in DB");
}, "json");
这很有效,因为我在insert_user.php
中取值并处理并插入数据库中。
如果我需要在表单中添加字段以让用户上传图片,该怎么办?
我如何在$.post
电话中这样做?如何在PHP中获取它?
顺便说一下,我正在使用Symfony2.0,以防万一它发生变化。但重要的是如何将文件类型字段添加到ajax调用。
提前致谢。
佩德罗
答案 0 :(得分:1)
你会发现使用预先构建的jquery插件要容易得多。我最喜欢的是uploadify http://uploadify.com。
它简单易用,它可以节省你很多时间试图找出你自己的方法<>
$ .post与下面的代码块相同。为了让你做你需要的事情,你需要改变它以至少使用它,然后事情会变得更简单。首先将$ .post更改为此
$.ajax({
type: 'POST',
url: url,
data: data,
success: success,
dataType: dataType
});
然后在ajax块中添加一个参数contentType:“multipart / form-data”或者尝试mimeType(不能记得那么清楚)和数据:$(“#form”)。serialize(),这应该有效。
请告诉我它是否无效
- NEW EDIT LOL--请原谅我的盲码,你可能需要测试一下
我做了一些研究并发现了这个。您需要构建此数组并将其添加到ajax块中的数据
var files = new FormData($('#fileinputid'));
jQuery.each($('#fileinputid')[0].files, function(i, file) {
files.append(i, file);
});
如果我读到的内容是准确的,你应该能够使用其余的ajax数据传递该数组。虽然我不完全确定如何将其添加到序列化数据。
请测试一下并告诉我。如果它不起作用,请为您完成一个完整的JavaScript脚本测试,然后在此处发布
答案 1 :(得分:0)
本教程可能有所帮助:Nettuts+: Uploading Files With AJAX
答案 2 :(得分:0)
制作iframe并在其中填写表格,提交表格并瞧。或者您可以使用其中一个AJAX File upload scripts
答案 3 :(得分:0)