大家好,我正在尝试将一个变量从jquery传递给视图,尝试在DOM中返回值,但它对我不起作用。
我需要一只手。
这是html文件。
<!DOCTYPE html>
<html>
<head>
<title></title>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
</head>
<body>
<script type="text/javascript">
$(function() {
$(document).on('submit', '#fomulario', function(e){
e.preventDefault();
$.ajax({
type:'POST',
url:'http://127.0.0.1:8000/form_ajax/',
data:{ nombre:$('#nombre').val(),
'csrfmiddlewaretoken':'{% csrf_token %}',
},
sucess:function(data){
$('#valor').html(data);
}
});
})
});
</script>
</body>
<form id="fomulario"> {% csrf_token %}
<label for="Nombre">Nombre</label>
<input type="text" id="nombre">
<input type="submit">
</form>
<div id="valor"></div>
</html>
视图。
def form(request):
return render_to_response('prueba2.html')
def form_ajax(request):
if request.is_ajax() and request.method == 'POST':
nombre = request.POST['nombre']
HttpResponse(nombre)
# message = "This is ajax"
else:
message = "Not ajax"
return HttpResponse(message)
我做得不好? 谢谢你们。
答案 0 :(得分:0)
您没有在POST数据中正确传递csrf令牌。您的数据应如下所示:
data:{
'nombre': $('#nombre').val(),
'csrfmiddlewaretoken': $("input[name='csrfmiddlewaretoken']").val()
}
问题是{% csrf_token %}
再次呈现整个输入,但您只需要在表单内呈现的输入值。
答案 1 :(得分:0)
我认为问题与您没有正确渲染模板有关。尝试使用这两种方法中的任何一种重新渲染模板。
1
public class Test {
private static Void method() {
System.out.println("OK");
return null;
}
public static void main(String[] args) throws Exception {
Method method = Test.class.getDeclaredMethod("method");
// TEST 3
MethodInvoker.invoke(new Callable() {
@Override
public Object call() throws Exception {
return invoke(method, null); // works
}
});
}
private static Object invoke(Method m, Object obj, Object... arg)
throws ReflectiveOperationException {
return m.invoke(obj, arg);
}
}
2
from django.shortcuts import render_to_response
from django.template import RequestContext
def form(request):
return render_to_response('prueba2.html', context_instance=RequestContext(request)))