【问题标题】:$.get request not working locally on ios devices$.get 请求无法在 ios 设备上本地运行
【发布时间】:2013-10-07 01:12:39
【问题描述】:

虽然关于 ajax 请求和 iOS 的问题已经得到了很好的记录,但我似乎找不到任何可以解决我的简单 $.get 问题的方法。请注意,这是一个在本地机器上运行的 rails 应用程序。

下面是一些获取用户通知并将其显示在 div 中的咖啡脚本。这适用于本地所有内容,包括访问本地 IP 地址时的 kindle(以下代码省略了真实 IP),但不适用于任何 iOS 设备。

我尝试将绝对路径添加为 URL 而不是 /activites/notifications。我也将其编写为 AJAX 和 $.get 请求,但在 iOS 上都不起作用。

如何获取下面的 GET 请求以在 iOS 设备上本地工作?

GET 请求

jQuery ->
      arr = []
      $("#notifications").click ->
        arr.push(1)
        if arr.length <= 1
          $.get("http://68.40.3.2:3000/activities/notifications", (data) ->
             $("#notifications-area").html data )

AJAX 请求

jQuery ->
  arr = []
  $("#notifications").click ->
    arr.push(1)
    if arr.length <= 1
     $.ajax({
       url: "http://68.40.3.2:3000/activities/notifications",
       cache: false,
       timeout: 100000,
       type: "GET",
       error: -> alert("didnt work")
       success: (data) ->
            $("#notifications-area").html data
    })

如果有人需要更多代码,请大声疾呼。

【问题讨论】:

  • 这用于省略我的真实 IP 地址。占位符
  • 所以你在你的真实代码中使用了一个真实的 IP 但你的 iOS 设备拒绝这样做?您是否尝试过直接从 Mobile Safari 的 URL 栏中访问该 URL?我使用 iPad 在本地网络上通过 IP 访问内容从未遇到任何问题。
  • 是的,我可以通过移动 safari URL 栏访问 url 没有问题,这会按预期呈现通知,只有当我尝试通过此 $.get 请求请求它们时,没有任何效果。我在 safari 和 xcode 开发工具上也看不到任何 javascript 警告。

标签: javascript ios ruby-on-rails ajax coffeescript


【解决方案1】:

似乎引导程序是罪魁祸首。我正在使用传统的引导导航栏和下拉元素。特别是锚链接中的.dropdown 类和data-toggle 元素以某种方式导致记录不加载/不显示。如果有人知道为什么会发生这种情况或从引导程序更新,那么很高兴听到它。现在这里是我解决问题的方法。

导航栏结构。从锚标记中删除了数据切换和下拉类。

<li class="dropdown">
  <a id="notifications" href="#" class="<%= number_of_activities(current_user) > 0 ? 'new-notifications' : '' %>" title="Notifications">
      <div class="notifications-count large" id="">
        <%= number_of_activities(current_user) %>
      </div>
  </a>
  <ul class="dropdown-menu span6" id="notifications-area">
  </ul>
</li>  

notifications.js.coffee 保持不变,除非在记录加载之前切换通知区域,并且 stopPropagation 调用以便当您在通知区域外单击时关闭 div

 jQuery ->
   arr = []
    $("#notifications").click (e) ->
      arr.push(1)
      e.stopPropagation()
      $('#notifications-area').toggle()
      if arr.length <= 1
        $.get("/activities/notifications", (data) ->
          $("#notifications-area").html data )

 $('#notifications-area').click (e) ->
    e.stopPropagation()

 $(document).click ->
    $("#notifications-area").hide()

【讨论】:

    猜你喜欢
    • 2015-10-01
    • 2015-01-14
    • 1970-01-01
    • 1970-01-01
    • 2015-02-24
    • 2018-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多