问题是我有一个嵌入式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中获取数据?
答案 0 :(得分:0)
看起来你在该请求中将JSON发送到服务器,所以要在Django中获取变量,你需要这样做:
def lesson_validate(request,lesson_number):
import json
data = json.loads(request.body)
text = data.get('text')
# Do stuff.