ajax填充后无法从pre元素获取数据

时间:2015-05-31 14:18:40

标签: javascript jquery python ajax django

问题是我有一个嵌入式python解释器,在用户按下“Run”之后,解释器的输出被转移到pre元素。我想从pre元素中获取数据并通过AJAX将其发送到django服务器。问题是,即使将数据分配给变量,django也一无所获。我也可以在按下“运行”后启动解释器和AJAX脚本,两者都可以在onclick上工作。我正在使用POST请求。

`$(document).ready(function(){
   $('#run').click(function(){
   var input_string = String(document.getElementById("output").innerHTML);
   alert(input_string);
   $.ajax({
     url: '/courses/python3/lesson_validate/{{ lesson_number }}/',
     data: {"text": input_string, csrfmiddlewaretoken: '{{ csrf_token }}'},
     dataType: "json",
     type:"POST",
     success: function(data, textStatus){
       alert('get_response');
       alert(data);
     },
     error : function(xhr,errmsg,err) {
       alert(xhr.status + ": " + xhr.responseText);
     }
   });
 });
});

`

这样代码完美无缺

var input_string = String(document.getElementById("output").innerHTML); alert(input_string);

但是当我尝试在ajax中使用该变量时,服务器无法获取它。 我尝试使用async: false,它没有改变任何东西。 这是查看代码:

`def lesson_validate(request,lesson_number):
    args = {}
    args.update(csrf(request))
    out_compare = Lessons.objects.get(id=lesson_number).lesson_output
    if request.method == "POST" and request.POST.get('text') == out_compare:
        text = "they are equal"
        return HttpResponse(json.dumps(text), content_type='application/javascript')
    else:
        args['testtest']=request.POST.get('text')
        return render_to_response('course_lesson.html', args,  context_instance=RequestContext(request))`

我检查request.POST.get('text')后它是空的

问题是如何从之前分配的变量中获取ajax中的数据,而不仅仅是从sting中获取数据?

1 个答案:

答案 0 :(得分:0)

看起来你在该请求中将JSON发送到服务器,所以要在Django中获取变量,你需要这样做:

def lesson_validate(request,lesson_number):
  import json 
  data = json.loads(request.body)
  text = data.get('text')
  # Do stuff.