使用JQuery进行跨域请求

时间:2010-09-01 14:50:40

标签: javascript asp.net jquery jsonp yql

这是一个here

的后续问题

这里简要介绍一下我要做的事情。文件服务器创建一个文本文件以指示进程的结束。在Web服务器的网页上,我每隔x秒循环并发出一个ajax请求,以确定测试文件是否存在(ajax请求http://fileserver/files/UserFile.txt

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

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

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

有什么想法吗?

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

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

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

你可以尝试的是在网站上添加一个ASP页面,该网站在服务器上运行代码,检查文件是否存在,只返回一小段HTML,你可以将{{1}添加到页面中}。

答案 2 :(得分:0)

我可能会离这里不远,但是......你不能用HUMONGOUS超时创建一个异步(!)Ajax客户端请求。解雇它,然后等待。您将调用一些服务器脚本,该脚本经常在服务器上的循环中检查(使用中间的睡眠),文件是否存在。并且在文件最终显示之前不回复Ajax请求。然后服务器脚本回复并退出。

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