带有输入更新的Jquery序列化

带有输入更新的Jquery序列化,jquery,forms,serialization,Jquery,Forms,Serialization,我对jquery和序列化方法有问题 我有一个表单,通过$.ajax方法发送。在这个方法中,我使用serialize()。在调用serialize之前,我使用一个函数修改2个输入文本值,但在序列化2个输入时发送旧值 这是我的密码 $('#formANAGRAFICA3').submit(function() { codeAddress(); var $form = $('#formANAGRAFICA3'); $.ajax({ type: 'post',

我对jquery和序列化方法有问题

我有一个表单,通过
$.ajax
方法发送。在这个方法中,我使用
serialize()。在调用serialize之前,我使用一个函数修改2个输入文本值,但在序列化2个输入时发送旧值

这是我的密码

$('#formANAGRAFICA3').submit(function() { 
    codeAddress();
    var $form = $('#formANAGRAFICA3'); 
    $.ajax({
        type: 'post',
        data : $form.serialize(),
        url: $form.attr( 'action' ),
        success: function(data, textStatus, jqXHR) {
            $('#editANAGRAFICA3').show();
        }
    });
    return false;
});

function codeAddress() { 
    var address = 'my value';
    geocoder.geocode( {'address': address}, function(results, status) { 
        if (status == google.maps.GeocoderStatus.OK) { 
            var pos = results[0].geometry.location;
            map.setCenter(pos);
            marker.setPosition(pos);
            document.getElementById("aTitle33").value = pos.lat(); 
            document.getElementById("aTitle34").value = pos.lng();
        } else {
            alert("Geocode was not successful for the following reason: " + status);
        }
    });
} 
当它发送表单时,接收到的数据不会更新,即使我使用
codeAddress
函数修改了输入文本值。为什么?

codeAddress()
不会立即修改输入字段。相反,它发出AJAX(异步)请求,并在收到响应时更新您的输入。同时,代码的其余部分将正常运行

作为时间表:

  • 调用
    codeAddress()
  • 向谷歌地图发出AJAX请求
  • codeAddress()返回
  • 序列化并提交表单
  • 谷歌的回应回来了
  • 输入被修改,太晚了,无法在表单提交中使用
  • 解决方案是等待
    geocoder.geocode()
    完成后再提交表单

    geocoder.geocode( { 'address': address}, function(results, status) {
        // Modify inputs
        // Submit form
    }
    

    请将代码放入代码块中,以便可读。是否确定执行了
    codeAddress
    函数中的代码?您有一些条件表达式可能会阻止它运行。您的
    状态
    变量是否真的等于
    google.maps.GeocoderStatus.OK)