在 IOS 中的用户交互之前,Ajax 调用不起作用

Posted

技术标签:

【中文标题】在 IOS 中的用户交互之前,Ajax 调用不起作用【英文标题】:Ajax call not working until user interaction in IOS 【发布时间】:2013-12-17 19:20:43 【问题描述】:

我正在使用 phonegap 和 jQuery 开发应用程序,在 ios 上执行 ajax 请求时遇到问题。我提出请求,我服务器上的 php 接收信息并回显正确答案。原来我的应用程序在我以某种方式与屏幕交互(例如滚动)或真的等待太久(超过一分钟)之前,我的应用程序不会“获取”信息。这个问题演变了,一开始发生在几个请求之后,现在第一个 ajax 已经显示了它。我注意到的另一件事是,当取出所有(或几乎所有)javascript 和/或 css(奇怪)时,问题就消失了,就好像它与手机内存有关。使用 async : false 进行请求时,问题也消失了!它发生在 iPhone 4 上。在 android 和 PC(Chrome 和 Mozilla Firefox)上进行了测试,运行良好。

最奇怪的是,当我与屏幕交互时,答案出现了,它没有等待一秒钟,几乎是瞬间......好像答案已经在那里,但由于某种原因没有出现。

Ps:不会出现错误提示。

jQuery.ajax(
  type: 'GET',
  url: 'url',
  crossDomain: true,
  data: 
    data: data
  ,
  error: function() 
    alert('error');
  
).done(function(data) 
  alert(data);
);

【问题讨论】:

是什么触发了 Ajax 调用?超时/间隔? 只是一个点击事件... 【参考方案1】:

http://api.jquery.com/jQuery.ajax/

如果您希望在响应时触发功能,我会使用完成而不是完成。

【讨论】:

我使用 done 作为成功,但这不是问题,当我使用 success 时,问题仍然存在......【参考方案2】:

我的猜测是您没有取消点击操作并且页面正在刷新

$(".yourSelector").on("click",function (evt) 
   evt.preventDefault();
   //your ajax call
);

【讨论】:

谢谢,但它不起作用......当我滚动它时它工作的事实真的让我发疯...... 您还有其他选择吗?

以上是关于在 IOS 中的用户交互之前,Ajax 调用不起作用的主要内容,如果未能解决你的问题,请参考以下文章

PhoneGap ios构建Ajax不起作用

使用dwr后,javaweb设置的session超时失效,web.xml和tomcat设置都不起作

ajax调用中的输入值不起作用

SAPUI5 Cordova iOS 应用程序 Ajax 调用不起作用(无限挂起)

在 iOS 应用程序的 SVProgressHUD 中禁用用户交互不起作用

ASP.NET Core - 在没有Ajax的情况下调用javascript中的控制器方法