用jquery+ajax js取值问题

用jquery+ajax js取值问题,第1张

var jobject = '{[';

$("cancel")each(function(i,item){

var span_str = $(this)find("span[class='filename']")[0]val();

jobect = jobject+'filename,'+span_str+']';

xxxx

});

jobject = jobject + '}';

代码如下:

function a(callback){

alert('a');

callbackcall(this);//或者是 callback(), callbackapply(this),看个人喜好

}

function b(){

alert('b');

}

//调用

a(b);

这样的结果是先d出 'a',再d出‘b'。这样估计会有人问了“写这样的代码有什么意思呢?好像没太大的作用呢!”

是的,其实我也觉得这样写没啥意思,“如果调用一个函数就直接在函数里面调用它不就行了”。我这只是给大家写个小例子,做初步的理解。真正写代码的过程中很少用这样无参数的,因为在大部分场景中,我们要传递参数。来个带参数的:

复制代码 代码如下:

function c(callback){

alert('c');

callbackcall(this,'d');

}

//调用

c(function(e){

alert(e);

});

这个调用看起来是不是似曾相识,这里e参数被赋值为'd',我们只是简单的赋值为字符窜,其实也可以赋值为对象。Jquery里面是不是也有个e参数,下面我们就来讲讲

Jquery里面的e参数是如何被回调赋值的。

Jquery框架我想大家不陌生了,出来了好久,开发的时候都在用,比较简单,api网上搜起来很方便,上手快。在Jquery框架下,我们有时候要获取事件中的一些参数,比如我要获取当前点击的坐标,点击的元素对象。这个需求在Jquery里面好办 :

复制代码 代码如下:

$("#id")bind('click',function(e){

//epageX ,epageY ,etarget各种数据

});

用起来倒是挺方便,其实这个e参数的赋值也是通过回调函数来实现的,这个参数是用回调参数给它赋予了一个对象值,仔细研究过JJquery源码的朋友应该发现了这一点。

还有Ajax里面 $get('',{},function(data){}) data这个参数也是同样的原理。

我们来看看Jquery事件对象里面是怎么应用回调函数的。

为了方便,我简单的写了一下$相关的一些实现,之前写过“小谈Jquery”里面有比较接近框架实现的方法,我下面只是写一个简易的选择器。

复制代码 代码如下:

<div id="container" style="width:200px;height:200px;background-Color:green;">

< /div>

< script>

var _$=function (id)

{

thiselement= documentgetElementById(id);

}

_$prototype={

bind:function(evt,callback)

{

var that=this;

if(documentaddEventListener)

{

thiselementaddEventListener(evt, function(e){

callbackcall(this,thatstandadize(e));

} ,false);

}

else if(documentattachEvent)

{

thiselementattachEvent('on'+evt,function(e){

callbackcall(this,thatstandadize(e));

});

}

else

thiselement['on'+evt]=function(e){

callbackcall(this,thatstandadize(e));

};

},

standadize:function(e){

var evt=e||windowevent;

var pageX,pageY,layerX,layerY;

//pageX 横坐标 pageY纵坐标 layerX点击处位于元素的横坐标 layerY点击处位于元素的纵坐标

if(evtpageX)

{

pageX=evtpageX;

pageY=evtpageY;

}

else

{

pageX=documentbodyscrollLeft+evtclientX-documentbodyclientLeft;

pageY=documentbodyscrollTop+evtclientY-documentbodyclientLTop;

}

if(evtlayerX)

{

layerX=evtlayerX;

layerY=evtlayerY;

}

else

{

layerX=evtoffsetX;

layerXY=evtoffsetY;

}

return {

pageX:pageX,

pageY:pageY,

layerX:layerX,

layerY:layerY

}

}

}

window$=function(id)

{

return new _$(id);

}

$('container')bind('click',function(e){

alert(epageX);

});

$('container1')bind('click',function(e){

alert(epageX);

});

< /script>

这段代码我们主要看standadize函数的实现,兼容性的代码,就不多说了,返回的是一个对象

复制代码 代码如下:

return {

pageX:pageX,

pageY:pageY,

layerX:layerX,

layerY:layerY

}

然后再看bind函数里面的代码 callbackcall(this,thatstandadize(e)),这段代码其实就是给e参数赋值了,是用callback回调实现的。

callback 函数被调用的时候传入的是匿名函数

复制代码 代码如下:

function(e){

}

而callbackcall(this,thatstandadize(e))相当于是执行了这么一段代码

复制代码 代码如下:

(function(e){

})(standadize(e))

这也是Jquery用回调函数比较经典的地方,e参数就是这么被赋值的,说了这些你们也大概有个了解了,以及怎么使用了。

回调在各种框架中应用的比较多,有时候自己写一些东西的时候也可以根据实际情况用用看。

js是单线程的,常见的问题就是一段复杂的JavaScript脚本会中断页面其它脚本执行,甚至会出现页面失去响应,这也就是为什么ajax的API要设计成异步的。所以,执行function getid(id)时,先执行其他代码部分,再执行回调函数,即return resultdata的执行顺序在ajax回调函数resultdata=xml>

以上就是关于用jquery+ajax js取值问题全部的内容,包括:用jquery+ajax js取值问题、js怎样获取调用回调函数的参数值、怎么把Ajax获取到的值赋值给js变量等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址: https://outofmemory.cn/web/9669825.html

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

发表评论

登录后才能评论

评论列表(0条)

保存