我正在使用一个 PHP 文件(作为 wordpress 插件的一部分),它包含几个函数。
其中一个构建一个 html 表单,另一个处理提交的表单。
我已经向构建表单的函数添加了一个submit()
函数,在该函数中我调用了一个异步函数。
为了让它在提交表单之前完成,我正在使用preventDefault()
并submit()
在异步函数完成时调用。
问题是我对submit()
after的调用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