Ajax在pre元素填充后无法从其获取数据

ajax failing getting data from pre element after it gets filled

本文关键字:获取 数据 pre 元素 填充 Ajax      更新时间:2023-09-26

问题是,我有一个嵌入式python解释器,在用户按下"Run"后,解释器的输出被转移到前置元素。我想把数据从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获得数据,从一个变量分配之前,不只是从一个刺?

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

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