submit() 根本不触发
submit() is not triggering at all
我不确定为什么 submit()
根本没有触发。单击事件和基础 AJAX 调用工作正常,但表单未提交。我也试过$("#storeForm").unbind().submit();
也没有效果
$(document).on("click", '#submit', function(e) {
e.preventDefault();
var frm = $("#storeForm");
var address = $("#address").val();
var state = $("#state option:selected").text();
var city = $("#city").val();
var country = "USA";
var addressToSearch = state + " " + state + " " + country;
var urlGeoCode = 'https://maps.googleapis.com/maps/api/geocode/json?key=AIzaSyAfAyG4l207wcJUn-D8XsOUZvCSwJv27zs&&address=' + addressToSearch;
jQuery.ajax({
url: urlGeoCode,
success: function(result) {
var location = result.results[0].geometry.location;
$("#longitude").val(location.lng);
$("#latitude").val(location.lat);
$('#storeForm').submit();
},
});
});
已编辑: 结果 resultOutput 为正确的格式
浏览器的这个很棒 功能可以将您的 id="submit"
转换为表单上的 属性。这具有覆盖表单节点的 .submit
方法的不幸副作用,这就是 jQuery 无法提交所述表单的原因。
解决方案当然是删除 id="submit"
,可能用其他东西替换它或以不同的方式处理提交。
您的问题与 submit()
事件的触发完全无关。如果您检查控制台,您会看到一个错误:
resultOutput is not defined
这是因为您在 success
处理程序中访问响应文本的方式存在语法错误。结果,submit()
甚至没有被调用。
要解决此问题,您需要将 var location = resultOutput.geometry.location;
更改为 var location = result.results[0].geometry.location;
。这将在提交表单之前获得正确的数据。试试这个:
$(document).on("click", '#submit', function(e) {
var urlGeoCode = 'https://maps.googleapis.com/maps/api/geocode/json?key=AIzaSyAfAyG4l207wcJUn-D8XsOUZvCSwJv27zs&&address=Florida Florida Orlando';
jQuery.ajax({
url: urlGeoCode,
success: function(result) {
var location = result.results[0].geometry.location;
$("#longitude").val(location.lng);
$("#latitude").val(location.lat);
$('#storeForm').submit();
}
});
});
$('#storeForm').on('submit', function(e) {
e.preventDefault();
console.log('form submission...');
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form id="storeForm">
<input type="text" id="longitude" />
<input type="text" id="latitude" />
</form>
<button type="button" id="submit">Get location...</button>
我不确定为什么 submit()
根本没有触发。单击事件和基础 AJAX 调用工作正常,但表单未提交。我也试过$("#storeForm").unbind().submit();
也没有效果
$(document).on("click", '#submit', function(e) {
e.preventDefault();
var frm = $("#storeForm");
var address = $("#address").val();
var state = $("#state option:selected").text();
var city = $("#city").val();
var country = "USA";
var addressToSearch = state + " " + state + " " + country;
var urlGeoCode = 'https://maps.googleapis.com/maps/api/geocode/json?key=AIzaSyAfAyG4l207wcJUn-D8XsOUZvCSwJv27zs&&address=' + addressToSearch;
jQuery.ajax({
url: urlGeoCode,
success: function(result) {
var location = result.results[0].geometry.location;
$("#longitude").val(location.lng);
$("#latitude").val(location.lat);
$('#storeForm').submit();
},
});
});
已编辑: 结果 resultOutput 为正确的格式
浏览器的这个很棒 功能可以将您的 id="submit"
转换为表单上的 属性。这具有覆盖表单节点的 .submit
方法的不幸副作用,这就是 jQuery 无法提交所述表单的原因。
解决方案当然是删除 id="submit"
,可能用其他东西替换它或以不同的方式处理提交。
您的问题与 submit()
事件的触发完全无关。如果您检查控制台,您会看到一个错误:
resultOutput is not defined
这是因为您在 success
处理程序中访问响应文本的方式存在语法错误。结果,submit()
甚至没有被调用。
要解决此问题,您需要将 var location = resultOutput.geometry.location;
更改为 var location = result.results[0].geometry.location;
。这将在提交表单之前获得正确的数据。试试这个:
$(document).on("click", '#submit', function(e) {
var urlGeoCode = 'https://maps.googleapis.com/maps/api/geocode/json?key=AIzaSyAfAyG4l207wcJUn-D8XsOUZvCSwJv27zs&&address=Florida Florida Orlando';
jQuery.ajax({
url: urlGeoCode,
success: function(result) {
var location = result.results[0].geometry.location;
$("#longitude").val(location.lng);
$("#latitude").val(location.lat);
$('#storeForm').submit();
}
});
});
$('#storeForm').on('submit', function(e) {
e.preventDefault();
console.log('form submission...');
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form id="storeForm">
<input type="text" id="longitude" />
<input type="text" id="latitude" />
</form>
<button type="button" id="submit">Get location...</button>