2012-04-14 100 views
0

我正在使用jquery表單插件http://jquery.malsup.com/form/#ajaxForm上傳圖像通過ajax到在Django中編程的服務器端。上傳圖像時,會自動將背景更改爲該圖像。一切都很完美(圖像存儲在數據庫中,響應返回),但如何用該responseText更新css。jquery - 更新背景css

這裏是我的javascript代碼:https://gist.github.com/2381991

Django的響應:

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

Django的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:背景 - image:url()在jquery中。 任何人都可以幫助我嗎?

謝謝!

回答

2

在jQuery的形式插件showResponse方法回調,只是選擇元素,你想的背景圖像適用,而且使用的CSS方法來設置背景圖片:

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

注意:將需要使用相對於web根目錄的映像的路徑,而不是您的主目錄。

1

首先,什麼MIME類型響應客戶端的jQuery期待?您的代碼在HttpResponse中返回text/html,您可以.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(提交= FALSE)裝置技術領域進行的ModelForm?如何檢查Imagetype? – rnk 2012-04-14 05:01:51

+0

My MEDIA_URL ='http:// localhost:8000/files'MEDIA_ROOT ='home/try/files /' – rnk 2012-04-14 05:04:34

+0

@mk update'MEDIA_URL'to''/ files /'','MEDIA_ROOT' to''/ home /嘗試/文件',因爲它是一個絕對路徑。 – okm 2012-04-14 05:15:57