【问题标题】:Cross Domain requests using JQuery使用 JQuery 的跨域请求
【发布时间】:2011-04-06 20:50:52
【问题描述】:

这是here的后续问题

以下是我想要做的简要说明。文件服务器创建一个文本文件来指示进程的结束。在 Web 服务器上的网页上,我每 x 秒循环一次,并发出一个 ajax 请求以查明测试文件是否存在(对 http://fileserver/files/UserFile.txt 的 ajax 请求)

到目前为止,我已经尝试了以下方法:

  • 从客户端触发一个 Web 方法,该方法创建一个 HttpContext 对象以验证文本文件是否存在。但这在服务器上太费劲了,我开始在事件查看器中收到各种异常。
  • YQL 效果很好,但不幸的是它太慢了。用户等待的时间至少是两倍。

我正在寻找不涉及服务器端的解决方案。不知何故,我想使用 JQuery 来验证文件服务器上是否存在文本文件。

有什么想法吗?

【问题讨论】:

    标签: javascript asp.net jquery jsonp yql


    【解决方案1】:

    您应该可以使用JSONPJQuery.ajax() 进行跨域请求工作。使用jsonpjsonpCallback 属性。或者,您可以使用JQuery.getJSON()

    【讨论】:

    • @justkt - AFAIK jsonp 需要文件服务器上的服务器端页面 (aspx.cs) 发出请求并返回 json 字符串。我的文件服务器没有启用 ASP.NET。
    • 这是什么意思? JSONP 不需要任何这样的东西。它所需要的只是让您能够修改服务器端结果,以便返回 jsonpCallback({ yourData }) 而不是 { yourData }。
    • @user102533 - 正如@Ollie2893 所说,您可以通过各种方式提供 JSONP。只要您返回正确的 JSONP 语法(如我的链接中所述),它就会起作用。文件存在或缺失应该非常简单 - 只需发送一些触发服务器上的脚本以对该文件进行查找并返回 true 或 false 作为 JSON 格式的数据。
    • 我想我很困惑。你能用代码sn-p更新答案吗?谢谢
    • 你需要的 JSONP sn-p 是这样的: JS client: $.ajax({ dataType: "jsonp", ... }); PHP 服务器:exit($_REQUEST['callback'].'('.yourCurrentReply.')');而已。但小心点! jQuery JSONP 没有错误处理 (1)。所有 JSONP 请求都是方法 GET(有效负载 code.google.com/p/jquery-jsonp 以获得更好的实现。
    【解决方案2】:

    从文件系统提供单个文件是 Web 服务器可以做的最简单的操作。如果这已经太多了,那么所有其他解决方案都会变得更糟。找出为什么服务器需要这么长时间来提供一个简单的文件并修复它。

    注意:我假设文件很小,因为您说的是“测试文件”。如果它是一个大文件,服务器实际上会将它发送给需要大量资源的客户端。

    您可以尝试向网站添加一个 ASP 页面,该页面在服务器上运行代码以检查文件是否存在并仅返回一小段 HTML,您可以使用 jQuery.load() 将其添加到页面中。

    【讨论】:

    • YQL 需要很长时间,因为我的代码需要与第三方通信,这反过来又增加了开销。在服务器上执行 HttpWebRequests 需要很长时间,因为 1)它在服务器上执行,2)我必须为每个用户每隔几秒钟循环一次,这会增加服务器的压力
    【解决方案3】:

    我可能离基地很远,但是...你能不能创建一个异步(!)Ajax 客户端请求,并且超时。开火,然后等待。您将调用一些服务器脚本,该脚本在服务器上的一个循环中(在两者之间使用睡眠)每隔一段时间检查文件是否存在。并且在文件最终显示之前不回复 Ajax 请求。然后服务器脚本回复并退出。

    编辑:根据使用的服务器端脚本框架,您甚至可以获得一些操作系统支持。您也许可以在目录中的状态更改时休眠...

    【讨论】:

      猜你喜欢
      • 2011-11-30
      • 1970-01-01
      • 1970-01-01
      • 2014-09-01
      • 1970-01-01
      • 2010-10-19
      • 2013-06-15
      • 2011-07-05
      • 1970-01-01
      相关资源
      最近更新 更多