AJAX获取请求有时会在iOS Safari上失败
AJAX get request sometimes fails on iOS Safari
我正在尝试使用jQuery AJAX将我创建的json提要显示到我的网站的另一个页面上。在大多数情况下,我使用以下代码让它完美地工作,除了在iOS Safari上它偶尔不工作(大约十分之一)。当我说它不起作用时,文档中不会附加任何内容,并且我的".items"元素为空。
这是我在窗口加载时运行的jquery脚本:
$.ajax({
type: "GET",
url : '/json',
success: function (data) {
var json = JSON.parse(data.replace(/"/g, '"'));
$.each(json.data, function (index, element) {
$(".items").append("<p>" + json.data[index].Title + "</p>");
});
}
});
这是JSON提要,它似乎是有效的,但当向我的ajax请求添加dataType:'JSON'时,什么都不返回:
{
"data":
{
"1": {
"Title": "Page 1",
"Url": "/page-1"
},
"2": {
"Title": "Page 2",
"Url": "/page-2"
},
"3": {
"Title": "Page 3",
"Url": "/page-3"
}
}
}
奇怪的是,当这不起作用时,不会显示任何错误消息,所以我不知道实际原因是什么。我怀疑要么JSON格式不正确,要么JSON由于任何原因没有得到解析。在桌面浏览器上,它总是有效的,所以这让我相信这些不是原因,也许这只是iOS的一个bug。
有人能帮我解决这个问题吗?有没有办法检查我的json是否解析正确?
我遇到了完全相同的问题,iOS Safari会返回",即使是静态有效的JSON文件。。。所以我在我们的代码之间寻找类似的东西,因为我们都在使用"GET",所以我决定尝试POST,因为为什么不。。。果不其然,POST总是通过ajax返回我的json,而GET没有。。。
这肯定是iOS safari中处理不正确的原因,但切换到POST对我来说很有效……以防其他人遇到同样的问题。
相关文章:
- iOS Safari Javascript设置超时问题
- 有没有一种方法可以在过滤掉iOS Chrome、Firefox和其他浏览器的同时检测iOS safari
- 使用iOS Safari网络浏览器的全屏html5视频
- AJAX获取请求有时会在iOS Safari上失败
- webkitAudioContext在iOS Safari上创建MediaElementSource不工作
- iOS Safari下的密码错误
- 使用javascript编程触发iOS safari中的复制菜单
- 在不支持的浏览器中替代IndexedDB?Safari/iOS Safari Chrome
- iOS Safari过度滚动:下拉与弹跳
- Cordova iframe在iOS Safari中工作,但在Android中不起作用
- iOS Safari 隐私浏览本地存储和会话存储支持
- Cordova / Phonegap iOS Safari和语音合成将无法正常工作
- 在 iOS Safari 中模拟/触发选择框(可能带有触摸端)
- JavaScript 动画在 iOS Safari Webkit 浏览器中停止,当手指在屏幕上而不抬起时
- 为什么在用户滚动后,设置超时不会在触摸端处理程序中触发(iOS Safari)
- 禁用iOS Safari上的轮子选择器
- iOS Safari内存泄漏导致应用程序无法使用
- 在触摸开始或触摸结束时打开IOS Safari窗口
- Hammer.js正在阻止iOS Safari上的滚动事件
- Javascript setTimeout on iOS Safari