用javascript(jquery)重定向django中的表单提交



我不明白为什么这个重定向基本上发生在我的html中——我有一个id为id_location的文本输入字段,一个id是user_form的表单,以及id为submit_form的表格的提交按钮,我想做的是注册一个用户并获取他们的地址,然后使用地理编码来获取他们在地图上的坐标,并为用户位置的经度和纬度设置两个隐藏输入字段的值,id分别为id_longitude和id_latitude,最后提交表单

在后端,它们被重定向回主页,现在的问题是,每当我提交表格时,我都会被重定向到一个url,该url的位置是我在表格末尾的位置字段中填写的,所以例如,如果我在伦敦填写,我会得到这个

localhost:8000/signup/London

并且表单没有在后端提交(我检查了用户的django管理员,没有看到任何新内容)

我曾尝试在javascript代码中的战略位置放置警报,但警报在我阅读之前就显示并重定向了,我真的不知道这是否与django或我编写的javascript有关,但我相信这是因为javascript,但我可以提供更多关于我的django模型和视图的信息,但基本上,在django中,我使用了一对一字段来从用户那里获得更多信息,并扩展了UserCreationForm

$('#submit_form').on('click', function(e){
e.preventDefault();
var getlocation = $('#id_location').val();
$.getJSON('https://maps.googleapis.com/maps/api/geocode/json?key=API_KEY&address='+getlocation+'&sensor=false', function(results){

if (results.status == 'OK'){
    var latitude = results.results[0].geometry.location.lat;
    var longitude = results.results[0].geometry.location.lng;
    $('#id_latitude').val(latitude);
    $('#id_longitude').val(longitude);
    alert('say something before submission');
    $('#user_form').submit();
}
});
});

我还通过javascript lint运行了我的javascript,以检查语法错误,但没有

这也是阻止表单提交并在提交前修改表单中的值而不使用ajax的最佳方法吗?

更新在发布我的答案后,我纠正了一些拼写错误,但现在表单甚至没有提交

好吧,我想我最终用另一种方法自己解决了这个问题,我在位置字段上添加了一个更改事件,所以一旦用户键入信息并离开字段,事件就会被触发,地理编码就会发生并返回纬度和经度,我还发现我有一些语法错误,无法正确访问值。但在主要的时间里,我仍然会试图弄清楚为什么第一种方法在中不起作用

$('#id_location').on('change', function(e){
var getlocation = $('#id_location').val();
$.getJSON('https://maps.googleapis.com/maps/api/geocode/json?key=API_KEY&address='+getlocation+'&sensor=false', function(results){
    if (results.status == 'OK'){
    var latitude = results.results[0].geometry.location.lat;
    var longitude = results.results[0].geometry.location.lng;
    $('#id_latitude').val(latitude);
    $('#id_longitude').val(longitude);
    console.log(latitude);
    console.log(longitude);
    }
});
});

最新更新