Javascript 使用JQuery的跨域请求

Javascript 使用JQuery的跨域请求,javascript,asp.net,jquery,jsonp,yql,Javascript,Asp.net,Jquery,Jsonp,Yql,这是这个问题的后续问题 以下是我想做的简单介绍。文件服务器创建一个文本文件以指示进程的结束。在Web服务器上的网页上,我每x秒循环一次,并发出ajax请求以确定测试文件是否存在(ajax请求http://fileserver/files/UserFile.txt) 到目前为止,我已经尝试了以下方法: 从客户端触发创建HttpContext对象的web方法,以验证文本文件是否存在。但这在服务器上太费力了,我开始在事件查看器中遇到各种异常 YQL工作得很好,但不幸的是它太慢了。用户等待的时间至少是

这是这个问题的后续问题

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

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

  • 从客户端触发创建HttpContext对象的web方法,以验证文本文件是否存在。但这在服务器上太费力了,我开始在事件查看器中遇到各种异常
  • YQL工作得很好,但不幸的是它太慢了。用户等待的时间至少是等待时间的两倍
我正在寻找一个不涉及服务器端的解决方案。不知何故,我想使用JQuery来验证文件服务器上是否存在文本文件


有什么想法吗?

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

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


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

将文件系统中的单个文件提供服务,这是web服务器可以执行的最简单的操作。如果这已经太多了,那么所有其他解决方案都会更糟。找出为什么服务器需要如此长的时间来提供一个简单的文件,并解决这个问题

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


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

将其添加到页面,您应该能够使用该页面并执行跨域请求工作。使用
jsonp
jsonpCallback
属性。或者,您可以使用。

您应该能够使用和执行跨域请求工作。使用
jsonp
jsonpCallback
属性。或者,你可以使用。

我可能离基地有几英里,但是。。。您不能创建一个具有巨大超时的异步(!)Ajax客户端请求。发射它,然后等待。您将调用一些服务器脚本,该脚本每隔一段时间在服务器上的一个循环中(使用中间睡眠)检查文件是否存在。并且在文件最终显示之前不响应Ajax请求。然后服务器脚本回复并退出


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

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


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

YQL需要很长时间,因为我的代码需要与第三方通信,这反过来又增加了开销。在服务器上执行HttpWebRequests需要很长时间,因为1)它在服务器上执行,2)我必须每隔几秒钟为每个用户循环一次,这给服务器增加了压力。QL需要很长时间,因为我的代码需要与第三方通信,这反过来又增加了开销。在服务器上执行HttpWebRequests需要很长的时间,因为1)它在服务器上执行,2)我必须每隔几秒钟为每个用户循环一次,这会增加服务器的压力server@justkt-AFAIK jsonp需要文件服务器上的服务器端页面(aspx.cs),该页面发出请求并返回json字符串。我的文件服务器未启用ASP.NET。这意味着什么?JSONP不需要任何这样的东西。它所需要的只是您能够修改服务器端结果,以便返回jsonpCallback({yourData}),而不是{yourData}@user102533-正如@Ollie2893所说,您可以以各种方式提供JSONP。只要返回正确的JSONP语法(如我的链接中所述),它就可以工作。文件存在或不存在应该非常简单-只需发送一些在服务器上触发脚本的内容,对该文件进行查找,并以JSON格式返回true或false作为数据。我想我很困惑。你能用代码片段更新答案吗?感谢您所需要的JSONP代码段如下所示:JS客户端:$.ajax({dataType:“JSONP”,…});PHP服务器:退出($_请求['callback'].('.yourCurrentReply.');就这样。但是要小心!jQuery JSONP没有错误处理(1)。所有JSONP请求都是方法GET(有效负载<2K)。(1) 查看更好的实现。@justkt-AFAIK jsonp需要文件服务器上的服务器端页面(aspx.cs),该页面发出请求并返回json字符串。我的文件服务器未启用ASP.NET。这意味着什么?JSONP不需要任何这样的东西。它所需要的只是您能够修改服务器端结果,以便返回jsonpCallback({yourData}),而不是{yourData}@user102533-正如@Ollie2893所说,您可以以各种方式提供JSONP。只要返回正确的JSONP语法(如我的链接中所述),