0

我正在使用 Jquery 表单插件http://jquery.malsup.com/form/#ajaxForm通过 ajax 将图像上传到用 Django 编程的服务器端。上传图像时,它会自动将背景更改为该图像。一切都很完美(图像存储在数据库中并返回响应)但是如何使用该 responseText 更新 css。

这是我的 javascript 代码:https ://gist.github.com/2381991

姜戈回应:

 url('home/nirmal/try/files/background/monalisa.jpg')

Django 视图.py:

@login_required
def backgroundview(request):
    if request.is_ajax():
        form = BackgroundModelForm(request.POST, request.FILES)
        if form.is_valid():
            try:
                g = BackgroundModel.objects.get(user=request.user)
            except BackgroundModel.DoesNotExist:
                data = form.save(commit=False)
                data.user = request.user
                data.save()
            else:
                g.background = request.FILES['background']
                g.save()
            return HttpResponse("url('"+g.background.url+"')")
    else:
        form = BackgroundModelForm()
        return render_to_response("cover.html", {'form': form}, context_instance=RequestContext(request))

我不知道如何在 jquery 中更新 css: background-image: url() 。有人可以帮我吗?

谢谢!

4

2 回答 2

2

在 jQuery 表单插件的 showResponse 回调中,只需选择要应用背景图片的元素,然后使用 .css 方法设置背景图片:

$("#some_element_id").css("backgroundImage", "url('/relative/address/to/image.jpg')");

注意:您需要使用相对于 Web 根目录的图像路径,而不是您的主目录。

于 2012-04-14T04:14:37.807 回答
1

首先,您的客户端 jQuery 期望什么 mimetype 响应?你代码返回text/htmlHttpResponse你可以.css('background-image', response_data)

其次,g.background.url看起来不正确,您MEDIA_URL的设置是什么?

此外,请检查您的问题Model has no attribute _committedg.background = request.FILES['background']这里不检查图像类型,并且可以允许上传和存储任何类型的文件。

于 2012-04-14T04:38:40.030 回答