0

我有一个使用 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 调用中添加文件类型字段。

提前致谢。

佩德罗

4

4 回答 4

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 脚本测试,然后将其发布在这里

于 2012-10-03T11:32:00.520 回答
0

本教程可能会有所帮助:Nettuts+:使用 AJAX 上传文件

于 2012-10-03T11:05:50.580 回答
0

制作 iframe 并将表单放入其中,提交表单并瞧。或者您可以使用这些AJAX 文件上传脚本之一

于 2012-10-03T11:17:26.917 回答
0

我终于用了这个:

http://malsup.com/jquery/form/#faq

它非常适合我需要的东西。

谢谢你们的帮助。

于 2012-10-06T18:51:14.947 回答