js对象为空,延迟加载defer为空

qingwangyoucao 2010-09-30 02:52:48
<script type="text/javascript" >
//获取上下文
function imgNewsmore() {
alert("begin");
var IMGNEWS_ID=document.getElementById('IMGNEWS_ID').value;
var domain= '${pageContext.request.contextPath}';
var strInner = "";
var url = domain + "/doone/edu/news/imgNews/getPics.shtml?searchMap.IMGNEWS_ID="+IMGNEWS_ID;
$.ajax(
{
url:url,
type:"post",
dataType:"text",
data:"date=" + new Date(),
success:function (text) {
alert(text);
var jresult = eval(text);
strInner += '<div id="carousel">';
strInner +='<a href="#1"><img src="'+domain+'/images/portal/carousel_btn_lastpic.gif" id="carousel_btn_lastpic" alt="上一组" /></a>';
strInner +='<div id="carousel_container">';
strInner +='<ul id="samples_list">';
if (jresult.length > 0) {
for (var i = 0; i < jresult.length; i++) {

var IMGNEWS_DESC = jresult[i].IMGNEWS_DESC;//图片标题
var IMGNEWS_URL = jresult[i].IMGNEWS_URL;//图片路径
strInner += '<li><a href="' + domain + '/upload/imgNews/' + IMGNEWS_URL + '" target="_blank" title="'+IMGNEWS_DESC+'"><img src="' + domain + '/upload/imgNews/' + IMGNEWS_URL + '" alt="'+IMGNEWS_DESC+'" /></a></li>';
}
}
strInner += '</ul>';
strInner += '</div>';
strInner += '<a href="#1"><img src="'+domain+'/images/portal/carousel_btn_nextpic.gif" id="carousel_btn_nextpic" alt="下一组" /></a></div>';
strInner += '<div id="carousel_photo_container" align="center"><img src="' + domain + '/upload/imgNews/' + jresult[0].IMGNEWS_URL + '" alt="'+jresult[0].IMGNEWS_DESC+'" id="carousel_photo" /></div>';
strInner += '<p id="carousel_photo_intro" align="center">'+IMGNEWS_DESC+'</p>';
var pageid = document.getElementById("pageid");
pageid.innerHTML = strInner;
}, //success结尾
error:function (json) {
alert("error");
alert("\u7cfb\u7edf\u7e41\u5fd9\uff0c\u8bf7\u7a0d\u540e\u518d\u8bd5");
}
}
);
alert("end"); }
imgNewsmore();

function check(){
if( document.getElementById("carousel_container")==null){
imgNewsmore();
}
}
check();
</script>

<script language="javascript" defer="defer" type="text/javascript" src="${pageContext.request.contextPath }/js/home/carousel.js"></script>



...全文
183 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
qingwangyoucao 2010-09-30
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 kongxh1218 的回复:]
Ajax是异步执行的,代码执行到$.ajax的时候会继续执行alert("end")开始的代码,并不会停下来等服务器执行完了才继续。
将async属性设置为false就可以了

JScript code

$.ajax(
{
url:url,
type:"post",
async:false,
...
[/Quote]

已经将async:"false",
添加至代码,执行顺序还是begin-->end-->alert(text),没有改变。


麻烦继续帮忙,如果我想延迟加载
script language="javascript" defer="defer" type="text/javascript" src="${pageContext.request.contextPath }/js/home/carousel.js"></script>
等<div id="carousel_container">加载完后再调用carousel.js 延迟加载除了defer外,还有setTimeout。

setTimeout 怎么在哪里设置。在网上没有搜索到。多谢

kongxh1218 2010-09-30
  • 打赏
  • 举报
回复
Ajax是异步执行的,代码执行到$.ajax的时候会继续执行alert("end")开始的代码,并不会停下来等服务器执行完了才继续。
将async属性设置为false就可以了

$.ajax(
{
url:url,
type:"post",
async:false,
...
das_jack 2010-09-30
  • 打赏
  • 举报
回复
1 success,是在ajax异步请求成功后被调用的,当然不会顺序执行了
2 defer只在IE中支持
qingwangyoucao 2010-09-30
  • 打赏
  • 举报
回复
为什么中间的ajax不会再begin和end中间 按照正常顺序 执行?
为什么carousel.js不会延迟加载?虽然用了defer?

求高人帮忙,多谢
qingwangyoucao 2010-09-30
  • 打赏
  • 举报
回复
代码比较多,不须都看,注意粗体就可以。
首先执行 imgNewsmore 方法,在里面$.ajax创建 div对象carousel_container。
在下面的carousel.js中需要调用carousel_container。
但是imgNewsmore 执行顺序是先begin,后end,中间的ajax部分不执行,不会弹出alert(text);导致carousel.js 调用carousel_container为空。
提示null对象。这时,ajax部分才执行,弹出alert(text);


为什么中间的ajax不会再begin和中间执行?
为什么carousel.js不会延迟加载?虽然用了defer?

求高人帮忙

87,901

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧