调用ajax,不等待ajax执行完怎么做

调用ajax,不等待ajax执行完怎么做,第1张

就是同步和异步

同步就是不阻塞,异步就是阻塞

var xhr=new XML>可以在jquery的ajax方法成功执行之后,执行相应的js代码
例如:indexhtml 页面
<script language="javascript">
var id = 10;
$ajax({
url:'ajaxphpaction=ok',
type:'post',
data:'id='+id,
async : false,
success: function(data){
//可以在这里执行相应的js代码
$("#user_id")val(data);
}
});
</script>
<input type="text" name="user" id="user_id" value="">
<input type="button" value="点击" onclick="check();">
ajaxphp 处理页面
<php
if($_GET['action'] == 'ok'){
$id = $_POST['id'];
echo $id;
}
>

帖链接会被百度吃掉
动态加载js的四种方法
1、直接documentwrite
<script language="javascript">
documentwrite("<script src='testjs'><\/script>");
</script>
2、动态改变已有script的src属性
<script src='' id="s1"></script>
<script language="javascript">
s1src="testjs"
</script>

3、动态创建script元素
<script>
var oHead = documentgetElementsByTagName_r('HEAD')item(0);
var oScript= documentcreateElement("script");
oScripttype = "text/javascript";
oScriptsrc="testjs";
oHeadappendChild( oScript);
</script>
这三种方法都是异步执行的,也就是说,在加载这些脚本的同时,主页面的脚本继续运行,如果用以上的方法,那下面的代码将得不到预期的效果。
要动态加载的JS脚本:ajs,以下是该文件的内容。
var str = "中国";
alert( "这是ajs中的变量:" + str );
主页面代码:
<script language="JavaScript">
function LoadJS( id, fileUrl )
{
var scriptTag = documentgetElementByIdx( id );
var oHead = documentgetElementsByTagName_r('HEAD')item(0);
var oScript= documentcreateElement("script");
if ( scriptTag ) oHeadremoveChild( scriptTag );
oScriptid = id;
oScripttype = "text/javascript";
oScriptsrc=fileUrl ;
oHeadappendChild( oScript);
}
LoadJS( "ajs" );
alert( "主页面动态加载ajs并取其中的变量:" + str );
</script>
上述代码执行后 ajs 的 alert 执行并d出消息,
但是 主页面产生了错误,没有d出对话框。原因是 'str' 未定义,为什么呢?因为主页面在取 str 的
时候 ajs 并没有完全加载成功。遇到需要同步执行脚本的时候,可以用下面的第四种方法。

4、原理:用XML>

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12603570.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-26
下一篇 2023-05-26

发表评论

登录后才能评论

评论列表(0条)

保存