jquery - 如何让函数等待另一个完成执行?
问题描述
我有一个表单,是通过malsup ajaxForm插件提交的,我希望ajax调用等到leaflet准确位置插件找到准确的位置,这样我就可以将它附加到表单设置发送的数据中它在我的 html 中的一些隐藏字段中。问题是,我真的没有明确的方法来做到这一点。
我有以下内容:
function InitMap()
{
map = L.map('map');
function onAccuratePositionError (e) {
addStatus(e.message, 'error');
}
function onAccuratePositionProgress (e) {
}
function onAccuratePositionFound (e) {
$('#latitud').val(e.latlng.lat);
$('#longitud').val(e.latlng.lng);
$('#presicion').val(e.accuracy);
}
map.on('accuratepositionprogress', onAccuratePositionProgress);
map.on('accuratepositionfound', onAccuratePositionFound);
map.on('accuratepositionerror', onAccuratePositionError);
}
我的 Ajax 调用:
function InitJForm()
{
$('form').ajaxForm({
beforeSubmit:Geolocalizar,
success: function(datos)
{
window.location.href = 'some url...';
},
error: function(datos)
{
var w = window.open('about:blank');
w.document.open();
w.document.write(datos.responseText);
w.document.close();
}
});
}
地理位置调用:
function Geolocalizar()
{
map.findAccuratePosition({
maxWait: 15000,
desiredAccuracy: 20
});
return true;
}
有没有办法让地理定位调用等待 findaccurateposition 函数在发送 true 并提交请求之前完成查找位置?
解决方案
好吧..经过大量工作并尝试Defferred对象也没有成功,(无法捕获Api函数“findAccuratePosition”完成时,因为我认为它完成了)...我决定删除MALSUP ajaxForm插件并制作一个简单的自定义$ .ajax。邮政。
我阻止默认提交并调用 e.preventdefault。我刚刚将自定义 ajax 请求移至找到的 OnAccuratePosition,所以我保证,在地理定位找到坐标后,将使用位置信息执行 ajax 帖子。此外,我的表单正在提交一些文件(imgs),并且不得不遇到 FormData 对象解决方案,通过 AJAX 上传文件,我只发现 HERE 很好地解释了:
推荐阅读
- ios - Init(coder:) 没有实现
- salesforce - Salesforce 流程 - 循环 - 数据库访问潜在限制问题
- node.js - 传入的参数必须是 12 字节的单个 String 或 nodejs 中带有 findbyId 的 24 个十六进制字符的字符串
- php - 如何使用 facebook api 获取 facebook 共享计数
- php - 如何在 Laravel 中使用分形转换器返回数组而不是集合
- python - 列表中的 dict 中的 Python 列表
- c# - Asp.Net Mvc中的Excel导入过程出现的进度条与excel中的数据数量一样多
- ruby-on-rails - 2个模型之间的Rails ActiveRecord关系具有相同的列
- c# - 调用 Org.BouncyCastle.Security.DotNetUtilities.GetKeyPair 时 C#“密钥集不存在”
- php - 从数组数组创建多维数组