0

Jqueryフォームプラグインhttp://jquery.malsup.com/form/#ajaxFormを使用して、ajaxを介してDjangoでプログラムされたサーバー側に画像をアップロードしています。画像がアップロードされると、背景がその画像に自動的に変更されます。すべてが完璧です(画像はデータベースに保存され、応答が返されます)が、そのresponseTextで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))

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の設定は何ですか?

さらに、質問を確認してください。モデルには属性_committedg.background = request.FILES['background']ありません。ここでは画像の種類を確認せず、あらゆる種類のファイルをアップロードおよび保存できる可能性があります。

于 2012-04-14T04:38:40.030 に答える