如何在没有Web服务器的情况下运行Ajax代码?

3

我是在我的系统上不使用服务器运行ajax,我创建了一个包含以下内容的index.html文件。

JavaScript 函数:

function do_the_click(url)
{
alert('inside this method do_the_click');
    $.ajax({
                         async: false,
                         url : url, 
                         contentType: "text/html",
                         type : "GET",
                         dataType : "text/html",                
                         success: function(data){
                         alert('data');
           }});
} 

我的HTML主体内容是:

<a href="Java Collections.html" class="button" id="javacollections" onclick="do_the_click('this.href');"/>Java Collections</a>

我能够在do_the_click方法内部的警告窗口中获取此消息,但无法在警告窗口中获取数据,因此无法在index.html中获取Java Collections.html页面。
我在Google上搜索了很多关于如何在jquery.ajax中本地加载数据而不使用服务器的内容,但没有找到任何好的解决方案,因此我认为如果它驻留在Stack overflow上,对其他人也是有好处的。

@MikeW 我不同意这个观点。在没有服务器的情况下进行AJAX请求是可能的。我已经做过几次了。浏览器会代表你发出HTTP请求。 - Talha Masood
我认为你想使用 do_the_click(this.href) 而不是带单引号的形式。但由于文件名中有空格,请求可能仍然会失败,因此你可能需要去掉空格。 - Jarrett Widman
只要没有“跨域ajax请求”,我不认为他们不能从独立的html页面发出AJAX请求,而不运行在任何服务器上。当我为移动设备开发HTML 5应用程序时,我已经做过很多次了。该应用程序必须在PhoneGap中编译,以便所有AJAX请求都可以正常进行。 - Talha Masood
7个回答

4

如果您没有服务器,就不能发送Ajax请求,这将导致跨浏览器问题。正如其他人所说,Ajax无法使用file://协议,您需要一个服务器来发起支持Ajax的http://调用。


3

当您使用单独的HTML文件进行AJAX请求时,浏览器会发送HTTP请求到URL。您只需要确保已经包含了JQuery即可。以下是需要执行的操作:

包含Jquery:

<script src="js/jquery-1.10.2.min.js"></script>

这里的jQuery位于js文件夹中。它包含在独立的HTML文件中。现在,为了发起AJAX请求,请使用以下代码。

$.ajax({
          type: 'GET',
          url:  url, 

          success: function(data){
              console.log(data);
          },
          async:false
      });

我已经做了那个,我已经包含了jquery-1.10.2.min.js,这可能是文件系统的问题,我必须检查一下。 - Girish
我正在使用此URL http://code.jquery.com/jquery-1.10.1.min.js,我已经多次使用它。 - Girish
哎呀,我无法通过文件系统获取数据。 - Girish
你是否在本地引入了JQuery库?另外也要看看服务器返回的数据类型。在你的AJAX配置中,你指定了期望“text/html”的数据格式,所以你可能也需要检查一下这个。 - Talha Masood
如果我能帮到您,请友善地点个赞+1 :) - Talha Masood
显示剩余2条评论

1
我能够在没有Web服务器的情况下运行Ajax,问题出在我的代码上。下面是我在文件系统上运行的代码,您也可以使用它。
      function do_the_click(brl)
      {
          alert('inside this method do_the_click');
          alert(brl);
          var request  =     $.ajax({
                    async: false,
                    url: brl, 
                    contentType: "text/html",
                    type : "GET",
                    dataType : "html",                
                });

                request.done(function( msg ) {
                          alert(msg);
                          $( "#contentarea" ).load( msg, function() {
                                    alert( "Load was performed." );
                          });
                });

                request.fail(function( jqXHR, textStatus ) {
                          alert( "Request failed: " + textStatus );
                });

      }

Java集合框架


1
AJAX创建一个HTTP请求,必须由服务器响应。如果您没有服务器,则无法使用AJAX请求。您可以在计算机上运行服务器,但这与从本地文件系统获取文件不同。

0

现在在当前情况下,这取决于您的服务器所在位置。如果服务器在其他地方,它将需要CORS(跨源请求)。因此,使用带有CORS的file://可以完美地工作。

我来到这个问题是因为我正在寻找原因,为什么我能够在不使用Web服务器的情况下进行ajax请求。得到了答案,谢谢!


0

你做不到这个。如果你没有服务器,你将违反浏览器的跨域策略,因为你没有域名!

通过文件系统无法使用AJAX,你需要一个服务器。


0

这是一个较旧的帖子,但浏览器不需要在像OSX/Windows等常见操作系统上运行..今天许多人正在使用WPE/Wayland或QT5Webkit制作自己的浏览器,其中同源策略不适用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接