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