Javascript .load() 函数未执行

Posted

技术标签:

【中文标题】Javascript .load() 函数未执行【英文标题】:Javascript .load() function is not executing 【发布时间】:2014-02-15 19:22:20 【问题描述】:

我正在尝试根据用户的兴趣创建一个简单的 Newsfeed 页面。 下面我提供了相同的代码..我只是不明白这里的问题..问题是相同的代码在我的本地主机上运行良好,但在在线服务器上却不一样。但是 $(window) .scroll(function() 工作正常,数据正在正确获取,但 .load() 函数无法获取数据。

我在 javascript Consol.log 中遇到错误

XMLHttpRequest 无法加载 http://redirect.main-hosting.com/error404.php/26?domain=www.nizilla.tk。 请求中不存在“Access-Control-Allow-Origin”标头 资源。因此不允许使用原点“http://www.nizilla.tk” 访问。

我也尝试将 src 路径更改为 src="./profile-newsfeed/jquery-1.9.1.min.js" 但我仍然面临同样的错误。

/*--------------------------------  */

  <script src="http://www.nizilla.tk/profile-newsfeed/jquery-1.9.1.min.js">   </script>

 <script type="text/javascript">

 $(document).ready(function() 
    var track_load = 0; //total loaded record group(s)
var loading  = false; //to prevents multipal ajax loads
var total_groups = <?php echo $totalpage; ?>; //total record group(s)
//alert(total_groups);
if(total_groups<=0)
  
window.location='http://www.nizilla.tk/profile php/profilefollow.php';//

else

$('#container').load('http://www.nizilla.tk/profile php/userinterest.php', 'group_no':track_load, function() track_load++;); //load first group

$(window).scroll(function()  //detect page scroll

    if($(window).scrollTop() + $(window).height() == $(document).height())         //user scrolled to bottom of the page?
    

        if(track_load <= total_groups && loading==false) //there's more data to load
        
            loading = true; //prevent further ajax loading
            $('.animation_image').show(); //show loading image

            //load data from the server using a HTTP POST request

            //http://www.nizilla.tk/profile php/userinterest.php
            $.post('http://www.nizilla.tk/profile php/userinterest.php','group_no': track_load, function(data)

                $("#container").append(data); //append received data into the element

                //hide loading image
                $('.animation_image').hide(); //hide loading image once data is received

                track_load++; //loaded group increment
                loading = false; 

            ).fail(function(xhr, ajaxOptions, thrownError)  //any errors?

                alert(thrownError); //alert with HTTP error
                $('.animation_image').hide(); //hide loading image
                loading = false;

            );

        
    
);


 );

如果您能在这里指出我的错误,那将非常有帮助..非常感谢您的帮助

【问题讨论】:

查看此相关帖子。 ***.com/questions/6114436/… 【参考方案1】:

如果我理解正确,您正在对与您的页面所在的域不同的域执行XMLHttpRequest。因此浏览器会阻止它,因为出于安全原因,它通常允许同一来源的请求。当您想要进行跨域请求时,您需要做一些不同的事情。 Using CORS 是一个关于如何实现的教程。

当您使用邮递员时,他们不受此政策的限制。引用自Cross-Origin XMLHttpRequest

常规网页可以使用 XMLHttpRequest 对象从远程服务器发送和接收数据,但它们受到同源策略的限制。扩展并没有那么有限。只要首先请求跨域权限,扩展程序就可以与其源之外的远程服务器通信。

【讨论】:

谢谢 Lukas ...谢谢已经看过了..我仍然无法得到它..我的意思是 croww_policy_origin 问题是怎么回事。我所有的引用都指向同一个域而不是我的链接指向任何跨站点。如果这确实是问题,那么它如何为 post() 函数工作。感谢您的回复。【参考方案2】:

可能的灵魂是CORS ...浏览器不允许从不同的域获取数据,它的浏览器安全策略。浏览器实现同源策略。

您要么将这两个应用程序托管在同一域中,要么将CORS 实现到请求服务器应用程序。

编辑:

www.abc.com != abc.com != http://www.abc.com != https://abc.com != https://www.abc.com

浏览器感觉不同。它们在技术上是不同的。

"http://www.nizilla.tk/profile php/userinterest.php" 你所指的网址也无效,里面有空格。

【讨论】:

HI..Aaron 感谢您的宝贵意见..但我在这里引用相同的域名..我在这里没有使用任何跨域.. 而且我的两个文件都托管在同一个服务器和同一个域名上。 您使用的是哪个浏览器,查看基本网址 我正在使用 chrome.. 但我也检查了其他浏览器。我也得到了错误。那里的基本网址是一样的。 你试过这个 url nizilla.tk/profilephp/userinterest.php 配置文件和 php 中有空间,它是无效的 url【参考方案3】:

由于“同源策略”,加载函数没有被执行。请求的资源必须位于同一服务器中。

http://api.jquery.com/load/

http://en.wikipedia.org/wiki/Same_origin_policy

http://arecordon.blogspot.com.ar/2014/01/jquery-load-explained.html (这是我的博客,我解释一下这个功能是如何工作的)

【讨论】:

感谢 Augusto 我非常感谢您的帮助!那我在这里做错了什么?..因为我在这里没有使用任何跨域,而且我所有的链接都指向同一个域名。所以我认为你不可能有相同的_origin_policy。 嗨 Augusto.. 我浏览了你的博客,它写得非常好.. 但是它说“要记住的一件事是,查询将只允许您从您的站点加载资源。也就是说,你不能告诉 jQuery 告诉另一个站点的页面/片段。”但这正是我的疑问,因为我所有的 jquery 链接和其他链接都指向同一个域名和服务器。那么这是一个问题。 很高兴你喜欢它。然后,如果您确定所有请求都指向同一个站点,请使用相对路径,例如 profile php/userinterest.php 感谢您的回复..我也试过了,但仍然弹出相同的错误....只有当我删除“ 只是为了向您的问题添加更多信息,我搜索了您的问题并返回了一些结果。我阅读了前三四个,它们是与托管服务有关的问题。这是我用谷歌搜索的-> redirect.main-hosting.com/error404.php 也许这完全不相关。从你说的我可以看出问题不是加载函数,而是jquery库,浏览器无法下载。

以上是关于Javascript .load() 函数未执行的主要内容,如果未能解决你的问题,请参考以下文章

javascript-函数进阶

JavaScript回调函数未执行

等到 for 循环内的所有函数调用结束其执行 - Javascript

JavaScript - 运行函数时声明的变量未定义错误

javaScript事件事件流

javaScript事件事件流