2012-04-14 5 views
0

Я использую плагин формы JQuery http://jquery.malsup.com/form/#ajaxForm для загрузки изображений через ajax на серверную часть, запрограммированную в Django. Когда изображение загружается, оно автоматически меняет фон на это изображение. Все идеально (изображения хранятся в базе данных, а ответ возвращается), но как обновить css с помощью этого responseText.JQuery - обновление Background css

Вот мой Javascript код: https://gist.github.com/2381991

Джанго ответ:

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

Джанго views.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)) 

Я не знаю, как обновить CSS: background- image: url() в jquery. Может ли кто-нибудь мне помочь?

Спасибо!

ответ

2

В showResponse обратного вызова формы плагин JQuery, просто выберите элемент, который вы хотели бы применить фоновое изображение, и использовать метод .css, чтобы установить фоновое изображение:

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

Примечание: Вы необходимо будет использовать путь к изображению, относящемуся к корню веб-сайта, а не к вашему домашнему каталогу.

1

Во-первых, какой mimetype ответа ваш клиентский jQuery ожидает? Вы код возвращает text/html в HttpResponse, и вы могли бы .css('background-image', response_data).

Во-вторых, g.background.url выглядит некорректно, каков ваш MEDIA_URL в настройках?

Кроме того, пожалуйста, проверьте свой вопрос Model has no attribute _committed, g.background = request.FILES['background'] здесь не проверяет тип изображения и позволяет загружать и хранить любые файлы.

+0

Могу ли я использовать это g.background = form.save (commit = False) .background для ModelForm? Как проверить Imagetype? – rnk

+0

My MEDIA_URL = 'http: // localhost: 8000/files' MEDIA_ROOT = 'home/try/files /' – rnk

+0

@mk update 'MEDIA_URL' to' '/ files /' ',' MEDIA_ROOT' to ''/ home/try/files'', поскольку это абсолютный путь. – okm