问题标签 [jquery-mobile-ajax]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
817 浏览

jquery - jQuery移动多页切换页面前等待ajax返回数据

我在多页表单中使用 jQuery mobile。当用户单击标记为Next Page的按钮时,我想运行 AJAX 请求。根据 AJAX 请求的结果,我想阻止用户访问下一页。

我相信我遇到的问题是我的 AJAX 请求比下一页事件需要更长的时间来回复。因此,它让用户进入下一页而不让 AJAX 请求完成。

至少我认为这就是正在发生的事情。有没有人遇到过这个问题或知道这个问题的解决方案?

HTML:

jQuery:

在上面的代码示例中,当我单击“下一页”按钮(即#btnPage2)时,它允许我访问第 2 页,即使当我检查控制台日志并且我看到“第 2 页上不允许该用户”时也是如此。

更新:

我尝试将代码调整为以下。它有点工作,但只有在不允许用户访问 page2 时。 e.preventDefault正在让 ajax 完成,但是,我想不出一种强制更改 page2 的方法。如果允许用户访问 page2 行

$(":mobile-pagecontainer").pagecontainer("change", "#page2");

似乎是导致问题的原因......它只是创建了调用 pageChange 事件的无限循环。我认为这是强制将页面更改为 page2 的方法,但我认为我错了,我无法弄清楚如何强制它更改为 page2

更新#2

我尝试实施@deblocker 修复,但我仍然遇到同样的问题。canNotPass当我在 ajax 设置为代码的情况下运行以下代码时,true似乎永远无法达到测试canNotPass. 因此,它永远不会被设置e.preventDefault,并且用户被允许访问 page2。

我认为该解决方案与设置延迟对象有关,该对象将允许 ajax 在页面更改发生之前完成。唯一的问题是我知道如何设置/使用延迟对象。

JSFiddle

0 投票
0 回答
43 浏览

visual-studio-2017 - 带有 apache cordova 的 Visual Studio 2017 应用程序在使用 Debug-Windowsx64-Local Machine 的 AJAX Post 上获得 NetworkError 但适用于 Android 和 IOS

我在使用 Apache Cordova Proyect 时遇到了这个问题……调试与 Android Emulator 和 IOS 完美配合……但是在 Windows 中,我在函数中遇到 NetworkError(结果)……这是我的代码: