我正在尝试在Ajax中请求一个页面和一个普通的GET请求。我的基本布局是这样的:
<html>
<head>
//css file
</head>
**************
<body>
<script> </script> // this script needs to be loaded at the end of the page load in both GET and AJAX
</body>
*****************
//js files (jQuery)
</html>
*中的区域由ajax加载
如果我发出GET请求,我会得到完整的页面。如果我发出Ajax请求,我只得到正文部分(没有jQuery)。
现在,body标签包含一个脚本标记。
<script type="text/javascript">
window.onload = function() {
$.getJSON("/loc", function (data) {
// .......
});
};
</script>
当我发出GET请求时,此代码运行正常。页面加载后执行此脚本。但是当我发出Ajax请求时,脚本不会执行,因为页面已经加载了。
所以我试过了:
<script type="text/javascript">
$(document).ready(function () {
$.getJSON("/loc", function (data) {
.....
});
});
</script>
现在这适用于Ajax,但不能使用GET请求,因为jQuery位于页面的末尾。
script标签位于body标签内,jquery位于body标签之后,所以如果我在jQuery之后移动它。所以我需要为我的页面制作2个设计:1个用于我的Ajax请求,1个用于我的GET请求。如果不是在Ajax中,我将最终加载jQuery脚本两次。
所以我的问题是我可以为Ajax和GET请求运行一个脚本吗?
答案 0 :(得分:2)
现在这适用于ajax,但不适用于GET请求 因为jquery位于页面的末尾
将所有脚本(和脚本标记)放在jquery之后,一切都应该正常工作。
答案 1 :(得分:0)
您的问题仍然不明确,但要尝试指出正确的方向。
好的,你的基本问题是:
这个脚本需要在GET中的页面加载结束时加载 和AJAX
您尚未详细说明此脚本的内容或必须加载的原因,但我会说,不需要加载。
加载页面时,脚本会被加载。加载ajax时,您不需要重新加载脚本,因为它已经加载了!如果您需要在脚本中调用某些内容,这是另一回事,只需调用相关方法,但不要重新加载脚本。它已经离开了它。
我发出GET请求,我得到了完整的页面。
再说一遍,不要这样做。这不是AJAX应该如何工作的。仅通过动态加载您想要的页面的部分:
<html>
<head>
//css file
</head>
<body>
<script> </script> // this script needs to be loaded at the end of the page load in both GET and AJAX
//NO IT DOESN'T!
<div>
**DYNAMIC section load this and only this**
</div>
</body>
//you don't need to load JQUERY again. It's already loaded just use it.
//js files (jQuery)
</html>
使用Ajax很好,但不能使用GET请求,
听起来你试图将一个简单的链接变成一个AJAX请求。哪个没问题,但您不能简单地用getJSON
替换链接,并希望它能正常工作。它比这复杂得多。基本上你离你需要的地方很远。花更多时间学习AJAX和异步加载页面。它并不像将一些javascript函数放入页面那么简单,而且只是单页应用程序的中提。