Tag: 同步

如何避免3 ajax通话?

在您选择国家/地区后,我编写了一些过滤省/州选择字段的代码: var cache = {}; function updateProvinceOptions($select, values, initial) { for(i in values) { $select.append(”+values[i][1]+”); } $select.val(initial).trigger(‘change’); } $(”).insertBefore(‘.province’).change(function() { // insert select boxes beside hidden province inputs $(this).siblings(‘input.province’).val($(this).val()); // update hidden input with current value }); $(‘.country’).change(function() { var $countrySel = $(this); var $provSel = $countrySel.parent().parent().next().children(‘td’).children(‘select.province’); var $provInput = $provSel.siblings(‘input.province’); var country = $countrySel.val(); […]

运行多个javascript函数时,只有前几个工作

我想在点击上运行一个运行多个其他javascript函数的函数。 它可以工作,但仅限于前几个被调用的函数。 更多细节:我正在尝试过滤网格。 “savedSearch”函数由一个按钮调用,然后按钮将根据您保存的搜索条件搜索多个字段(即过滤A列中的“星期一”,即模型中的列)。 每个“子function”(“appliedSearch”function)适用于不同的字段。 前几个通常工作(我尝试格式化这许多不同的方式)。 例如,它将过滤列A,B和C,但列D,E和F没有任何反应。 注意:“applySearch”是我试图调用的函数,“ColumnA”是我发送给函数的字段名,@ Html.Raw(Json.Encode(Model.ColumnA))是变量(即“Monday”)在上面的例子中)。 function savedSearch(e){ if (@Html.Raw(Json.Encode(Model.ColumnA)) != “0”) { applySearch1(“ColumnA”, @Html.Raw(Json.Encode(Model.ColumnA))); } if (@Html.Raw(Json.Encode(Model.ColumnB)) != “0”) { applySearch2(“ColumnB”, @Html.Raw(Json.Encode(Model.ColumnB))); } if (@Html.Raw(Json.Encode(Model.ColumnC)) != “0”) { applySearch3(“ColumnC”, @Html.Raw(Json.Encode(Model.ColumnC))); } if (@Html.Raw(Json.Encode(Model.ColumnD)) != “0”) { applySearch4(“ColumnD”, @Html.Raw(Json.Encode(Model.ColumnD))); } if (@Html.Raw(Json.Encode(Model.ColumnE)) != “0”) { applySearch5(“ColumnE”, @Html.Raw(Json.Encode(Model.ColumnE))); } if (@Html.Raw(Json.Encode(Model.ColumnF)) != “0”) […]

Jquery:如何同时进行连续和同时动画

我想要一个屏幕元素(其ID为#sign1 )以正弦波移动。 为此我需要连续向上和向下’摆动’,同时它同时向右移动。 但我并不真正了解队列 ,这对于连续的动画来说是非常必要的。 我可以同时做2 个动画。 。 。 例如,同时向上和向右移动, 通过将queue: false放在两者上, 我可以做两个连续的动画,。 。 。 例如,向上移动,然后向下移动, 通过链接.delay(1000).queue(function(n) {在它们之间 。 。 。 但我似乎无法做三次或更多连续摆动,同时向右移动。 在下面,你看,我可以得到2次向下摆动,跳过它们之间的向上摆动,这奇怪地不起作用。 此外,这是它的小提琴: JS小提琴 使用Javascript //MOVE RIGHT FOR 7 seconds: $(“#sign1”).animate( {left: ‘+=80%’}, { duration: 7000, queue: false } ); //WOBBLE DOWN for 1 second $(“#sign1”) .animate( { top: ‘+=15%’}, { duration: 1000, queue: […]

Javascript事件同步

我正在建立一个非常沉重的javascript(使用jQuery)的音乐会日历。 我在整个应用程序中同步各种事件时遇到了问题,我正在寻找有关如何执行此操作的建议。 一个简单用例的例子: 用户点击一个月 日历会跳到该月 一个更复杂的用例的例子: 用户选择一位艺术家 日历确定该艺术家的首次演出的日期 日历会跳到该月 日历突出显示艺术家的节目 一个偶然的问题是,当我试图突出艺术家的节目时,新月还没有呈现。 因此,即使按顺序调用这些函数,也不会突出显示该节目。 显然,使用setTimeout()是非常hacky,并不能保证工作。 首先,一个简单的问题 – 是否有可能(即使在Chrome中)以下函数不按顺序运行? function steps(){ stepOne(); //TAKES 30 SECONDS stepTwo(); //TAKES < 1 SECOND } 第二,一个相关的简单问题: 如果放在函数的末尾,则JS回调总是会运行 给定函数中的其他所有内容都已运行完毕? 如果是这样,我可以将每个函数嵌套为其先前函数的回调。 但是,一旦考虑了所有不同的用例,这可能会变得难以处理。 这是我正在考虑的方法: 1)允许每个函数成为可选的回调参数。 如果它存在, 在函数的最后调用它。 2)在UI刷新期间,创建一个数组,并堆叠任何函数 在这个数组中调用。 3)完成这个“脚本”后,遍历数组,调用 使用下一个函数按顺序添加每个函数 作为前一个函数的回调。 我想这会确保按顺序调用所有函数。 另一种方法是使用附加事件侦听器 $(document).bind(“listener.name”, fnCallback); 然后打电话 $(document).trigger(“listener.name”); 每当事件发生时。 但是,我猜这也有点笨拙,考虑到不同的事件可能需要根据用例调用不同的函数集。 我总是可以打电话 $(document).unbind(“listener.name”); 在向它添加新事件之前,但是再次 – 我倾向于创建一种主要的“脚本”,正如我在第一种方法中所建议的那样。 […]

同时执行同步和异步AJAX

我想运行AJAX来获取一些URL数据,从数据构建一个对象并将其分配给一个全局对象变量。 所以我知道我需要运行同步 ajax请求。 (对吧?)我也想利用beforeSend设置给我的用户一个加载屏幕。 (我可能应该首先询问,是在发送之前实现它的唯一方法吗?)我如何结合使用同步和异步的好处? 异步: $.ajax({ url:’scripts/scripts.php?call=page&url=’+thisurl, /*local*/ dataType:’html’, beforeSend:function(){ $(‘#display’).html(”); }, success:function(data, textStatus, jqXHR){ /*local*/ myobj = getMyObj(data); $(‘#display’).html(myobj); }, error:function(jqXHR, textStatus, errorThrown){ } }); 同步: $.ajax({ url:’scripts/scripts.php?call=page&url=’+thisurl, /*local*/ dataType:’html’, async:false, success:function(data, textStatus, jqXHR){ /*global*/ myobj = getMyObj(data); } }); $(‘#display’).html(myobj); 对不起,如果这没有意义

同步三个ajax请求

我有三个AJAX请求一个接一个地触发,我希望能够同时回显所有数据。 $.ajax ({ type: “POST”, url: “page1.php”, data: “var1=” + var1, success: function(msg) { $(“#results2”).load(“page2.php”, function (responseText, textStatus, XMLHttpRequest) { $(“#results3”).load(“page3.php”, function (responseText, textStatus, XMLHttpRequest) { if (textStatus == “success”) { $(“#results1”).html(msg); } }); }); } }); #results1 , #results2和#results3都需要同时加载相关数据。 上面的代码没有这样做。

同步Ajax请求“锁定”浏览器

我有几个jQuery Ajax请求,它们必须是同步的,但它们会一直锁定/冻结浏览器,直到收到响应。 我的主要问题是,在收到响应之前,我必须显示旋转图标,但由于冻结,微调器不会显示,即使它奇迹般地没有动画。 这是显示微调器并发送请求的事件: $(document).on(‘click’, ‘#open-button’, function () { var input = “some text”; var wrapper = $(‘#wrapperWindow’); wrapper.children().animate({ opacity: 0 }, 500); wrapper.children().remove(); wrapper.append(”); var spinner = $(‘#loading-spinner’); spinner.css({ backgroundImage: ‘url(“img/loading.gif”)’, opacity: 0 }); spinner.show(); spinner.animate({ opacity: 1 }, 500); var dataForTab = requestData(input); // 0) { //do stuff } }); 请求: function requestData(input) […]

使用deffered的乒乓行为

我创建了以下javascript代码: var index, _i; var dfd = new $.Deferred(); dfd.resolve(); for (index = _i = 0; _i < 10; index = ++_i) { $.when($, dfd).done(function() { console.log('ping'); promise = (function(index) { setTimeout(function() { console.log('pong'); dfd.resolve(); }, 3000); dfd.reject(); })(index); }) } 在控制台中我看到以下结果 ping ping ping ping ping ping ping ping ping ping pong pong pong […]

如何使用jQuery执行同步请求?

为什么不返回该函数的responseText? function LoadBookmarksAsXml() { return $.ajax( { type: ‘GET’, async: false, url: ‘http://www.google.com/bookmarks/?output=xml&num=10000’ }).responseText; } (如果我定义了一个成功的回调函数并将async设置为true,它会起作用!)在此先感谢!! 编辑 :不要担心跨域调用; user603003表示(在对已删除的答案的评论中),这是在允许跨域请求的Chrome扩展程序中。 解决方案,如果有人想要这样做: return $.ajax( { type: ‘GET’, async: false, url: ‘http://www.google.com/bookmarks/?output=xml&num=10000’, }); (您将获得XMLHTTPRequest对象。)

Ajax同步回调

我在本地文件夹中有一个pageTest.html,这个页面调用了一个service.ashx?i = …(返回值param传递递增+1),后面跟着Ajax代码: . . getIncr: function(parameters, success){ $.ajax({ async: false, type: methodType, url: getTarget, data: “n=”+parameters, dataType:”jsonp”, success: success }); } . . html页面调用此函数m次(使用脚本..): . var start = function(){ . . var val = 0; . . for(i=0; i<m; i++) { Foo.getIncr(val, function(returned_n){ val = returned_n; }); } }; 在页面加载期间,调用在“异步模式”下执行,但我在Ajax中设置“ async:false ”。 我读到了这个问题,并找到了原因,即如果有不同的域,Ajax无法同步从page.html调用service.ashx。 是否有解决方案在page.html中执行同步调用到该service.ashx(在不同的域中)?