Я использую файл PHP (как часть плагина wordpress), который содержит несколько функций.
Один из них создает HTML-форму, а другой имеет дело с отправленной формой.
Я добавил к функции, которая создает форму, функцию submit()
, в которой я вызываю асинхронную функцию.
Чтобы завершить ее до отправки формы, я использую preventDefault()
и вызов submit()
, когда завершается асинхронная функция.
Проблема в том, что мой вызов submit()
после preventDefault()
приводит к отличным результатам в функции PHP, которая обрабатывает отправленную форму, чем исходная отправка.
Вот код PHP:
if(isset($_POST['submit-reg']))
{
$output = sreg_process_form($atts);
return $output;
}
else
{
$data = array();
$form = simplr_build_form($data, $atts);
return $form;
}
Когда я не использую preventDefault()
и submit()
, условие является положительным, и форма отправляется в обычном режиме.
Когда я их использую, выполняется вторая часть, а форма перестраивается, а не отправляется.
Итак, вопрос в том, что в preventDefault()
, а затем submit()
приводит к тому, что isset($_POST['submit-reg']))
ложно, и как я могу это исправить?
редактировать: вот JS:
$('#simplr-reg').submit(function(event)
{
event.preventDefault();
codeAddress(function(success){}); //callback from googlemaps
});
function codeAddress(callback)
{
var geocoder = new google.maps.Geocoder();
geoCodingStarted = true;
geocoder.geocode( { 'address': address}, function(results, status)
{
if (status == google.maps.GeocoderStatus.OK)
{
var latitude = results[0].geometry.location.lat();
var longitude = results[0].geometry.location.lng();
$("input[name=latitude]").val(latitude);
$("input[name=longitude]").val(longitude);
$('#simplr-reg').submit();
}
});
} // end of code address