2012-05-13 16 views
0

djangoにajaxでテキストを投稿し、入力データを保存し、同じページにデータを表示し、twitterのようにリフレッシュしない場合。djangoテンプレートのajax投稿更新なし

私のjs:

$('#SumbitButton').click(function(){ 
     var data_1 = $('#data_1').val() 
     var data_2 = $('#data_2').val() 
     var data_3 = $('#data_3').val() 
     var data_4 = $('#data_4').val() 
     var user = $('#AuthorName').text() 
     var authorprotrait = $('#UserProprait').html() 
    if(data_1.length>0){ 
     $.ajax({ 
      type: 'POST', 
      url: '/post/', 
      data:{'data_1':data_1,'data_2':data_2,'data_3':data_3,'data_4':data_4}, 
      async: false, 
      error: function(msg){alert('Fail')}, 
      success: function(msg){ 
       $('#TopicWrap').prepend("<div class='topic-all even'><div class='topic-left'><div class='topic-author'><div class='topic-author-protrait'>"+authorprotrait+"</div><div class='topic-author-nickname'>"+authorname+"</div></div></div><div class='topic-right'><div class='topic-meta'><span class='topic-datetime'></span></div><div class='topic-content-wrap'><div class='topic-content'>"+msg+"</div></div></div><div class='clearfix'></div></div>"); 
       $('#data_1').val(''); 
       $('#data_2').val(''); 
       $('#data_3').val(''); 
       $('#data_4').val(''); 
      } 
     }); 
    } else { 
     alert('The data_1's length error !'+data_1.length); 
    } 
}); 

とhtml:

<div id="TopicTextarea"> 
    <div> 
     data1:<input tabindex="4" id="data_1" type="text" name="data1" value="" maxlength="6" placeholder=""/></br> 
     data2:<input tabindex="4" id="data_2" type="text" name="data2" value="" maxlength="8" placeholder=""/></br> 
     data3:<input tabindex="4" id="data_3" type="text" name="data3" value="" maxlength="10" placeholder=""/></br> 
     data4:<input tabindex="4" id="data_4" type="text" name="data4" value="" maxlength="10" placeholder=""/> 
     <div id="TopicFormControl"> 
     <button type="button" id="SumbitButton" class="button orange">sumbit</button> 
     </div> 
    </div> 
   <div class="clearfix"></div> 
</div> 
<div id="TopicWrap"> 
{% include 'topics.html'%} 
</div> 

とビュー:

@login_required 
def post(request): 

    assert(request.method=='POST' and request.is_ajax()==True) 
    data_1 = smart_unicode(request.POST['data_1']) 
    data_2 = smart_unicode(request.POST['data_2']) 
    data_3 = smart_unicode(request.POST['data_3']) 
    data_4 = smart_unicode(request.POST['data_4']) 

    data_obj = DataPool(user=request.user,data_1=data_1,data_2=data_2,data_3=data_3, data_4=data_4) 
    data_obj.save() 

    content = '"+data_3+"  "+data_4+" "+data_1+"("+data_2+")' 

    response = HttpResponse(cgi.escape(content)) 

    return response 

I入力データとsumbit]ボタンをクリックし、それを保存することができますデータを表示することはできません。私のコードで何が間違っていますか?

ありがとうございました。

答えて

1

まず、Posterのようなものを使用して、ビューが期待どおりに戻ることをテストします。それではAJAXパーツの構築を開始してください。

何が間違っているのか...実際に何をしているのかを言うのではなく、「データを表示できない」と書いているだけなので、少し難しいです。にある

>>> '"+data_3+"  "+data_4+" "+data_1+"("+data_2+")' 
'"+data_3+" \xe3\x80\x80"+data_4+"\xe3\x80\x80"+data_1+"("+data_2+")' 

:あなたは、これはと思うが、何それが実際には何であるか

content = '"+data_3+"  "+data_4+" "+data_1+"("+data_2+")' 

それは私には本当にはっきりしていない:私はそれはあなたのビューでは、この行に関係してい疑います部分文字列を含む文字列を生成するとします。"data_3"(など)には提出されたデータが含まれています。

+0

データを保存して、ページに何らかのフォーマットでデータを追加したいのですが、ページを更新しません。どうすればよいですか? – sword

+0

一般的に正しい方法があります。各コンポーネントを個別にテストする必要があります。それが働いていることを確認するために、ポスターで。ビューが正しく呼び出されていますか?あなたのオブジェクトは救われていますか?あなたの意見は正しい返答を返していますか?そのレスポンスは正しく表示されていますか?これらのうちの1つが機能していない場合に、そのヘルプが必要な場合は、**どのように動作しているかについて具体的に説明する必要があります。 "データを表示できません"と答えるには不十分です。データは返されますか? JavaScriptエラーが発生していますか?他に何か? – beerbajay

関連する問題