我想知道是否可以制作文件上传表单并使用 symfony2 通过 ajax 发送数据?
这是我的树枝视图:
<form class="upavatar" method="post" action="{{ path('sbcUserBundle_avatar', {'id': app.security.getToken().getUser().getId()}) }}" {{ form_enctype(form) }}>
{{ form_end(form) }}
{{ form_errors(form) }}
</form>
</div>
<script>
$('.upavatar').submit(function()
{
$.post($(this).attr('action'), $(this).serialize(), function(data) {
$("#upmyavatar").empty();
$("#upmyavatar").html(data);
});
return false;
});
</script>
因为我在 symfony2 中做了一个表单上传文件并且没有 ajax(实际上是 jquery),所以它就像一个魅力,但是当我尝试通过 ajax 发送它时,表单处理程序找不到文件变量(我用 xdebug 检查)。所以我'我开始怀疑是否可以在 symfony2 中通过 ajax 发送文件,过去我成功地将 ajax 用于“正常”形式。
谢谢。
好的,我这样做了:
<script>
$('#myForm').live('change', function()
{
var options = {
beforeSend: function()
{
$("#progress").show();
//clear everything
$("#bar").width('0%');
$("#message").html("");
$("#percent").html("0%");
},
uploadProgress: function(event, position, total, percentComplete)
{
$("#bar").width(percentComplete+'%');
$("#percent").html(percentComplete+'%');
},
success: function()
{
$("#bar").width('100%');
$("#percent").html('100%');
},
complete: function(response)
{
$(".myavatarupload").empty();
$(".myavatarupload").html("<font color='green'>"+response.responseText+"</font>");
},
error: function()
{
$("#message").html("<font color='red'> ERROR</font>");
}
};
$("#myForm").ajaxForm(options);
});
</script>