如何将td的值发送到在ajax中动态添加到表中的views.py?

时间:2014-07-09 12:34:52

标签: javascript jquery python ajax django

我正在尝试在django中创建自定义日历。      它有下一个和上一个按钮,分别可以查看下个月或上个月。      我在jquery,ajax函数中动态添加了日期,年份和月份名称。      当用户单击NEXT按钮时,我希望当前加载的月份名称返回到views.py.I我无法捕获月份名称,因为它动态添加。  我的代码是:Search.html

    $("#next").click(function()
 {

var input_string = $("#cal_mon").val();


alert("i======",input_string);
console.log("i",input_string);

$.ajax({
                    url : "/getnextmonth/",
                    type : "POST",
                    dataType: "json",

                     data :
                     {
                        client_response  : input_string,

                        csrfmiddlewaretoken: '{{ csrf_token }}'
                     },
                        success : function(json) 
                        {

                        var date =  json.server_response;
                        var day =  json.server_response1;
                        var year =  json.server_response2;
                        var month =  json.server_response3;
                        var list_months =  json.server_response4;
                        var dates_as_per_daysinmonth =  json.server_response5;

                        var body = document.getElementsByTagName('body')[0];     
                        var table = document.getElementById("eve_calendar");

                        var tbody = document.getElementById('tbody');

                        $("#row_1").empty();
                        $("#row_2").empty();
                        $("#row_3").empty();
                        $("#row_4").empty();
                        $("#row_5").empty();

                        var row1 = document.getElementById("row_1");
                        var row2 = document.getElementById("row_2");
                        var row3 = document.getElementById("row_3");
                        var row4 = document.getElementById("row_4");
                        var row5 = document.getElementById("row_5");


                    <!-- Month name --> 
                    var tr_mon = document.getElementById("event_month");
                    var td_mon = document.getElementById("cal_mon");
                    var td_nextb = document.getElementById("next_b");


                                    //alert(month);


                <!-- leap year -->  

                        if(year%400 ==0)
                        {
                        //// alert("leap year");
                        }
                        else if (year%100 ==0)
                        {
                    //  alert("not leap year");
                        }
                        else if (year%4 ==0)
                        {
                    //  alert("leap year");
                        }
                        else
                        {
                    //  alert("not");
                        }


                    <!-- alert(month_name); -->                                


                    for (var i=0;i<month;i++)
                  { 
                          if(i==month-1)
                        { 

                             td_mon.textContent = list_months[i] + " "+ year;                           
                           //  document.getElementById("cal_mon").value =list_months[i];

                         }
                  }

                        tr_mon.appendChild(td_mon); 
                        tr_mon.appendChild(td_nextb); 

                      <!-- no. of days in Month  -->    

                        var no_of_days;

                            if(month!=2)
                        {
                            if(month==9||month==4||month==6||month==11)
                                 no_of_days=30;
                           else
                                no_of_days= 31;
                        }
              else   {
                        no_of_days=  (year%4==""  && year%100!="" ? 29 : 28);
                     }

                    //    alert(no_of_days);    


                        <!-- add dates as per month-->


                        var flag2=1;

                        //tbody.appendChild(tr_mon);


                         for (var n =0;n < dates_as_per_daysinmonth.length;n++)
                {           

                          for(var m=0;m<dates_as_per_daysinmonth[n].length;m++)
                        {
                            console.log(dates_as_per_daysinmonth[n][m]);

                            if(flag2==1)
                            {
                               var cell = document.createElement("td");
                               if (dates_as_per_daysinmonth[n][m]==0)
                               {
                               }
                               else   
                                     cell.textContent = dates_as_per_daysinmonth[n][m];
                               row1.appendChild(cell);

                            }


                            if(flag2==2)
                            {
                               var cell = document.createElement("td");
                               if (dates_as_per_daysinmonth[n][m]==0)
                               {
                               }
                               else 
                                     cell.textContent = dates_as_per_daysinmonth[n][m];

                               row2.appendChild(cell);

                            }


                            if(flag2==3)
                            {
                               var cell = document.createElement("td");
                               if (dates_as_per_daysinmonth[n][m]==0)
                               {
                               }
                               else 
                                   cell.textContent = dates_as_per_daysinmonth[n][m];
                               row3.appendChild(cell);

                            }

                            if(flag2==4)
                            {
                               var cell = document.createElement("td");
                               if (dates_as_per_daysinmonth[n][m]==0)
                               {
                               }
                               else 
                                      cell.textContent = dates_as_per_daysinmonth[n][m];
                               row4.appendChild(cell);

                            }

                            if(flag2==5)
                            {
                               var cell = document.createElement("td");
                               if (dates_as_per_daysinmonth[n][m]==0)
                               {
                               }
                               else 
                                   cell.textContent = dates_as_per_daysinmonth[n][m];
                               row5.appendChild(cell);

                            }

                            //alert("dt====",dates_as_per_daysinmonth);
                        }

           //               tbody.appendChild(row2);
        ///              }  

                    flag2=flag2+1;

                }       

                   //     tbody.appendChild(tr_mon);
                        tbody.appendChild(row1);
                        tbody.appendChild(row2);
                        tbody.appendChild(row3);
                        tbody.appendChild(row4);
                        tbody.appendChild(row5);

                        table.appendChild(tbody);

                        body.appendChild(table);
                    },


                          error : function(xhr,errmsg,err)
                          {
                            alert(xhr.status + ": " + xhr.responseText);
                         }
    });
  });


   </script>

我的views.py函数:::

     flag34=0
     year_count=0
 @csrf_exempt
 def getnextmonth(request):

    global flag34
    global counter
    if request.POST.has_key('client_response'):


            if(flag34==0):
                counter=0
                flag34=1
         # calendar with events

            month1 = request.POST['client_response']
            counter=counter+1
            print "c",counter

            print "\n getnextmonth:::: new m-=========",month1


            sys_date_time = strftime("%Y-%m-%d %a %H:%M:%S ")
            print sys_date_time
            string1=str(sys_date_time)

            str2=string1[8:10]
            print "str2",str2
            date=int(str2)
            print "date",date

            day=string1[11:13]
            ##    day=int(day)
            print "day",day


            month=string1[5:7]


            year=string1[0:4]

            year=int(year)
            print "year",year

            month=int(month)

            list_months=["January","February","March","April","May","June","July","August","September","October","November","December"]


            month2=month+counter
            print "month",month2

            print month+year

            if(month2==12):
                counter=0
                flag34=0
                cal = calendar.monthcalendar(year, month2)


            else:
                cal = calendar.monthcalendar(year, month2)
            print "next mon====",cal

            x = request.POST['client_response']


            print "======================================================================="
            print "value xxxxxx==",x
            print "======================================================================="

            response_dict = {}

            response_dict.update({'server_response': date })
            response_dict.update({'server_response1': day })
            response_dict.update({'server_response2': year })
            response_dict.update({'server_response3': month2 })
            response_dict.update({'server_response4': list_months })
            response_dict.update({'server_response5': cal })


            print "\njson list"

            return HttpResponse(json.dumps(response_dict), content_type='application/json')
    else:
            return render_to_response('Search.html',    context_instance=RequestContext(request))

请提出建议。我只是想知道我们是否正在动态地创建UI并将值分配给UI中的某个值,以及在views.py中发回该值的更好方法是什么,并进行一些计算并发送一些新值进行更新。

注意 ::: OHH!我只是试图通过使用全局变量来增加月份,但这不是永久性代码!我知道我可能错了!我是这个新手!请指正! 请帮忙 !我在UI技术方面并不是更好!

提前致谢! -Snehali

0 个答案:

没有答案