2015-11-25 2 views
1

Я не понимаю, почему это перенаправление происходит в основном в моем html. У меня есть поле textinput с id id_location, форма с идентификатором user_form и кнопка отправки для формы с id submit_form, то, что я пытаюсь сделать, это зарегистрировать пользователя и захватить его адрес, а затем использовать геокодирование, чтобы получить координаты на карте и установить значения двух скрытых полей ввода для долготы и широты местоположения пользователей с идентификаторами id_longitude и id_latitude соответственно и, наконец, отправить формуПереадресация на форму submit в jjjqo javascript (jquery)

на заднем плане они перенаправлены на главную страницу, теперь вот проблема, когда я отправляю форму, я перенаправляюсь на URL-адрес с местоположением, которое я заполнил в поле местоположения в форме в конце, так, например, если i заполнить в Лондоне я получаю это

localhost:8000/signup/London 

и форма dosen't представить на внутреннем интерфейсе (я проверил Джанго-администратора для пользователей и я ничего нового не вижу)

я пытался положить оповещения в стратегических местах в 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 через яваскрипта ворсинок, чтобы проверить на наличие ошибок синтаксиса, но нет ни

также это лучший способ, чтобы остановить форму от представления и изменять значения в форме перед подачей без использования Ajax?

UPDATE после публикации моего ответа, я исправил некоторые из моих опечаток, но теперь форма dosen't даже представить

+0

у вас есть опечатка в $ getJSON должна быть $ .getJSON Я предполагаю, что это результат вас копирование и вставка в SO –

+0

также вы вызываете submit(), это приведет к обновлению страницы. Зачем вам это нужно. точка jquery ajax состоит в том, чтобы избежать обновления страниц и т. д. ... вы просто вызываете свой метод и делаете что-то с ответом. –

+0

Оказывается, опечатка была там, но после ее исправления я все равно получаю такое же поведение (я думал, что я снова был спасен SO). – danidee

ответ

0

хорошо, я предполагаю, что я, наконец, решил это сам с другим подходом, я добавил событие изменения в поле местоположения, поэтому, как только пользователь наберет информацию и покинет поле, событие будет запущено и произойдет геокодирование и вернет широту и долготу, я также обнаружил, что у меня были некоторые синтаксические ошибки и я не получил правильные значения. но в основное время я все еще пытаюсь выяснить, почему первый подход не работает

$('#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); 
    } 
}); 
}); 
Смежные вопросы