js代码如下:
<script type=text/javascript>
function ajaxForm(){
$.ajax({
type: 'post',
//contentType: "application/json; charset=UTF-8",
url: $SCRIPT_ROOT,
dataType: 'json',
data:{
'n1': $('input[name=n1]').val(),
'n2': $('input[name=n2]').val(),
'n3': $('input[name=n3]').val(),
},
error: function(xhr, err){
alert('请求失败,原因可能是:' + err + '!')
},
success: function(data, textStatus){
$('#max').text(data.max);
$('#min').text(data.min);
}
});
return false
}
</script>
服务端只能用request.form.get()得到数据,request.get_json()却是None,改变contentType也是一样的,这是怎么回事呢?
我想应该是URL的问题$SCRIPT_ROOT = {{ request.script_root|tojson|safe }}是空的
怎样设置URL才能让进入服务view函数内呢?
虽然已经过了两年了,题主肯定不需要了,但是还是为将来可能要踩这个坑的同学答一下
你的ajax 采用“post”方法,但是没有告诉后端传递参数contentType: 'application/json; charset=UTF-8',
这样就告诉后端才用的是json格式,你的datatype其实是希望后端返回的数据格式!
但是这样设置后也只有request.get_data有数据(),request.get_json()还是得不到数据,这时候需要设置data:JSON.stringify()也就是楼主找到的方法。