使用JSONP同步AJAX请求
Synchronous AJAX request with JSONP
我的理解是,iPhone上的Safari不会播放来自异步线程的音频(html5)。这是为了限制音频的播放,使其仅是对用户交互的响应,例如点击按钮。然而,这给我带来了一个问题。我希望通过点击按钮来播放声音,但点击按钮后,我需要建立要播放的mp3文件的地址,我目前正在通过异步AJAX调用来完成这项工作,如下所示:
function play() {
$.ajax({
url: 'http://apifree.forvo.com/etc/etc', jsonpCallback: "pronounce", jsonp: false, cache: true, dataType: "jsonp",
success: function (json) {
if (json.items.length !== 0) {
_player.src = json.items[0].mp3path;
_player.load();
}
},
error: function () {
}
});
}
正如你所看到的,我正在回调中调用_player.load()(随后调用_player.play()),这在iphone上不起作用,但在我的电脑上会起作用。我如何使这个AJAX调用同步,或者我如何解决这个问题?
这里有两个技巧来证明这个问题:
异步_player.load()不适用于iPhone,但适用于PC:http://jsfiddle.net/8muHa/27/
在iPhone和PC上同时工作的Syncronous _player.load():http://jsfiddle.net/8muHa/28/
如果必须异步加载文件名,可以预取吗?如果没有太多这样的值,那么只需预取这些值(比如当用户导航到网站的此部分时),然后在单击按钮时调用_player.play()
就可以了。
相关文章:
- ajax请求的顺序总是不同的
- 从ajax请求中获取javascript对象
- Ajax请求文档就绪会导致jquery加载缓慢
- MockJax没有在JavaScript应用程序中发送对我AJAX请求的响应
- 正在传递JSONP标头's数据参数到另一个文件中的AJAX请求
- JavaScript代码未正确检查ajax请求
- node.js请求数据事件未在CORS ajax调用中触发
- jQuery Ajax GET请求工作不正常
- "日期“;AJAX请求返回的类型值未定义
- Django - 响应请求 AJAX
- 使用 jQuery 的 CORS 请求 - $.ajax()
- 如果无线电值为 ==1,则请求 ajax
- 如何处理对循环中发出的多个异步请求(AJAX 调用)的响应
- POST请求ajax jquery错误
- CasperJS don'我没有请求AJAX
- 使用这种Facebook风格的Lightbox-请求AJAX-在一个页面上覆盖多个按钮
- 400错误请求ajax post请求
- 如何在开始发送请求ajax之前延迟3秒
- 与jQuery同时请求AJAX
- 使用POST请求AJAX发送json对象