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() 函数未执行的主要内容,如果未能解决你的问题,请参考以下文章