做ajax请求时callback函数调用时this变量的变化问题

代码大致如下
[code="javascript"]
var a = (function(){
var a = function (...,param) {
return new a.fn.init (...,param)

}
a.fn = a.prototype = {
init: function (...) {
...
this.param = param
}
callback: function (response) {
this.param //这里似乎this发生改变,this.param值为undefined
...
}
getData: function() {
//通过ajax获得数据,然后回调 callback
doGetAjax(url,data,this.callback)
}
}
a.fn.init.prototype = a.fn;
})()
[/code]
像这种地方想要在callback获得param应该怎么做?

edit1

想了一下,这里ajax返回调用的时候this已经没有绑定了,在a内找不到再次与this绑定的方法,
那就不使用this,使用函数类的局部全局变量达到私有变量的效果,
代码改变如下
:[code="javascript"]
var a = (function(){
var pParam; //添加私有变量
...
init: function (...) {
...
pParam=this.param = param
}
...
callback: function (response) {
pParam //这里似乎this发生改变,this.param值为undefined
...
}
[/code]
想了一下,是否所有对象的属性都应该赋值给 私有变量,而 this.XXX则是要暴露给外界才多加一个赋值?

edit 2

这两天重新看了下,发现这种私有变量是所有实例共享的,一个页面有多个同类组件的话就不行了.
如果是存储一个共享私有变量,每次ajax请求以后都手动立刻将私有变量赋值给相应实例变量,但这样的缺点是多次自动进行ajax操作的话是实现不了的,比如分页ajax请求。

这种情况究竟咋解决.

4个回答

感觉你说的很乱,猜的也很乱,这是一个基本的问题。
假设你的代码是这样的:
[code="js"]

doGetAjax = function(url, data, cb){ //.... var response = {}; cb(response); } var a = function(){ } a.prototype = { init: function(param){ this.param = param; }, callback: function(response){ alert(this.param); }, getData: function(){ //通过ajax获得数据,然后回调 callback var url = '', data = {}; doGetAjax(url,data,this.callback) } } var obj = new a(); obj.init('a'); obj.getData();

[/code]
执行到doGetAjax这里时,调用doGetAjax的是谁?这个你一定要搞清楚。
你不妨在doGetAjax方法中加上alert(this)看看:
[code="js"]
doGetAjax = function(url, data, cb){
//....
alert(this);
cb();
}
[/code]
可以看出doGetAjax这个方法是全局的,也可以说是window的对象,那么调用这个
方法的就是window,所以alert(this)打出来的也是: Object DOMWindow这个对象
然后你执行cb()这个时候还是用window对象去执行cb,所以你回调方法:
[code="js"]
callback: function(response){
alert(this.param);
},
[/code]
这个里面的this应是window对象,当然获取不到param,如果你想获得obj的param的话应该这样:
[code="js"]
doGetAjax = function(url, data, cb, scope){
//....
var response = {};
cb.call(scope, response);
}
[/code]
调用的时候要把当前对象指针传过去:
[code="js"]
getData: function(){
//通过ajax获得数据,然后回调 callback
var url = '', data = {};
doGetAjax(url,data,this.callback, this)
}

[/code]
这样this才是obj而不是window了。

感觉你说的很乱,猜的也很乱,这是一个基本的问题。
假设你的代码是这样的:


    doGetAjax = function(url, data, cb){
        //....
        var response = {};
        cb(response);
    }
    
    var a = function(){
    }
    
    a.prototype = {
        init: function(param){
            this.param = param;
        },
        callback: function(response){
            alert(this.param);
        },
        getData: function(){
          //通过ajax获得数据,然后回调 callback
          var url = '', data = {};
          doGetAjax(url,data,this.callback)
        }   
    }
    
    var obj = new a();
    obj.init('a');
    obj.getData();

执行到doGetAjax这里时,调用doGetAjax的是谁?这个你一定要搞清楚。
你不妨在doGetAjax方法中加上alert(this)看看:

doGetAjax = function(url, data, cb){
    //....
    alert(this);
    cb();
}

可以看出doGetAjax这个方法是全局的,也可以说是window的对象,那么调用这个
方法的就是window,所以alert(this)打出来的也是: Object DOMWindow这个对象
然后你执行cb()这个时候还是用window对象去执行cb,所以你回调方法:

callback: function(response){
    alert(this.param);
},

这个里面的this应是window对象,当然获取不到param,如果你想获得obj的param的话应该这样:

doGetAjax = function(url, data, cb, scope){
    //....
    var response = {};
    cb.call(scope, response);
}

调用的时候要把当前对象指针传过去:

getData: function(){
    //通过ajax获得数据,然后回调 callback
    var url = '', data = {};
    doGetAjax(url,data,this.callback, this)
}   

这样this才是obj而不是window了。

感觉你说的很乱,猜的也很乱,这是一个基本的问题。
假设你的代码是这样的:

doGetAjax = function(url, data, cb){ //.... var response = {}; cb(response); } var a = function(){ } a.prototype = { init: function(param){ this.param = param; }, callback: function(response){ alert(this.param); }, getData: function(){ //通过ajax获得数据,然后回调 callback var url = '', data = {}; doGetAjax(url,data,this.callback) } } var obj = new a(); obj.init('a'); obj.getData();


执行到doGetAjax这里时,调用doGetAjax的是谁?这个你一定要搞清楚。
你不妨在doGetAjax方法中加上alert(this)看看:

doGetAjax = function(url, data, cb){
    //....
    alert(this);
    cb();
}

可以看出doGetAjax这个方法是全局的,也可以说是window的对象,那么调用这个
方法的就是window,所以alert(this)打出来的也是: Object DOMWindow这个对象
然后你执行cb()这个时候还是用window对象去执行cb,所以你回调方法:

callback: function(response){
alert(this.param);
},

这个里面的this应是window对象,当然获取不到param,如果你想获得obj的param的话应该这样:

doGetAjax = function(url, data, cb, scope){
//....
var response = {};
cb.call(scope, response);
}

调用的时候要把当前对象指针传过去:

getData: function(){
//通过ajax获得数据,然后回调 callback
var url = '', data = {};
doGetAjax(url,data,this.callback, this)
}


这样this才是obj而不是window了。

iteye什么编辑器啊 晕死

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
preg_replace_callback 怎么调用本函数的变量做替换值

function cc(){ $str="123456789"; $pre="/([123]+)/"; $aa=array("123"=>"fdfd"); $ss=preg_replace_callback($pre, $aa[$1],$str) } aa是这个函数里的数组,,,我正则想用这个数组里的值去换,, preg_replace_callback就用这个,,不想用那个e修饰符 ,大伙说要怎么做

ajax的八种callback分别是什么意思?

callback的返回函数,onSuccess是返回成功的意思,onFailure是返回失败的意思, onLoading是返回加载时的要做的事情,onLoaded是返回加载后时要做的事情,那其他的是什么意思呢? 请教大神,如果之前这四个有问题的也请大神解答

关于JS中MutationObserver监听Dom树变化中的Callback函数一直调用的问题

今天做了一个水印防止消除的需求。我生成水印的方式是通过canvas中生成一张图片放在,body标签的背景图片。防消除用的就是MutationObserver去监听body标签中的属性是否变化,变化就重新生成水印。但是我在chrome浏览器测试取消背景图片这个样式的时候,会一直调用callback函数,这里就有点搞不明白了,希望大神能够解惑。 代码 <html> <head> <meta charset="utf-8" /> <title></title> </head> <script type="text/javascript" src="js/jquery-1.4.4.min.js" ></script> <script src="js/jquery.waterMarker.js"></script> <script> var myDate = new Date(); //获取当前年 var year=myDate.getFullYear(); //获取当前月 var month=myDate.getMonth()+1; //获取当前日 var date=myDate.getDate(); var h=myDate.getHours(); //获取当前小时数(0-23) var m=myDate.getMinutes(); //获取当前分钟数(0-59) var s=myDate.getSeconds(); var now = year+"-" + month + "-" + date + " " + h + ":" + m + ""; jQuery(function(){ waterMaker("huangshuo",now); //此处callback函数会一直调用,影响浏览器性能 var callback = function (records) { records.map(function (record) { console.log('Previous attribute value: ' + record.oldValue); var judge = record.oldValue + ""; var b = "background"; if(judge.match(b)){ waterMaker("huangshuo",now); //mo.disconnect(); //mo.observe(element[0], options); } }); }; var mo = new MutationObserver(callback); //var element = document.getElementById('#my_element'); var element = document.getElementsByTagName("body"); //alert(element[0]) var options = { 'attributes': true, 'attributeOldValue': true, } mo.observe(element[0], options); }) </script> <body> <div class="waterMakertClass"></div> </body> </html> 这里一直重复调用callback函数,控制台重复打印数据 ![图片说明](https://img-ask.csdn.net/upload/201901/11/1547195853_647168.png)

全局变量与局部变量同名,函数内部调用的是局部变量还是全局变量?

UINT8 acc_tab_sta = acc->acc_tab_sta; static void hmi_adas_root_callback_on_status(ndm_node_t *self, ndm_evt_t *in_status) { UINT8 acc_tab_sta = 0; switch (NodeMsgGetEvent(in_status)) { if(0 ==acc_tab_sta) { NodeRemove(node_hmi_adas_title, 0); } } }

ajax异步回调函数无法调用

<p>ajax.js代码:</p> <p><br><img src="http://dl.iteye.com/upload/attachment/553491/c9855833-60b1-3bca-9668-2b1007098d5a.jpg" alt=""></p> <p> </p> <p>url正确,已经进入到对应的aciton并执行有结果,但是 xmlHttp.onreadyStatechange=function()  这句一直未执行,我在函数里写了alert并未跳出,请大神看看娜丽有问题~~</p> <p> </p> <p> </p> <p> </p> <p>action的代码:</p> <p> </p> <p> </p> <p>public ActionForward execute(ActionMapping mapping, ActionForm form,</p> <p><span style="white-space: pre;"> </span>HttpServletRequest request, HttpServletResponse response) throws JSONException {</p> <p><span style="white-space: pre;"> </span>ManagerForm managerForm = (ManagerForm) form;// TODO Auto-generated method stub</p> <p><span style="white-space: pre;"> </span> <span style="white-space: pre;"> </span>List signList=null;</p> <p> </p> <p><span style="white-space: pre;"> </span>SignInService signService=(SignInService)getBean("signInService");</p> <p><span style="white-space: pre;"> </span>signList=signService.findAll(signIn);</p> <p><span style="white-space: pre;"> </span>JSONObject result = new JSONObject();</p> <p><span style="white-space: pre;"> </span>result.put("signlist", signList);</p> <p><span style="white-space: pre;"> </span>request.setAttribute("ajaxResult", result);</p> <p><span style="white-space: pre;"> </span>return null;</p> <p><span style="white-space: pre;"> </span>}</p> <p> </p> <p> </p> <p> </p> <p>jsp的代码:</p> <p><span style="white-space: pre;"> </span>&lt;body&gt;</p> <p><span style="white-space: pre;"> </span>&lt;input type="button" value="查询" onclick="getSignList()" /&gt;</p> <p><span style="white-space: pre;"> </span>&lt;/body&gt;</p> <p> </p>

用javascript监听第三方页面上的所有ajax请求

1 1 集成了另外一个web程序,我们把那个web程序放在我们提供的iframe里。那个web程序只有在第一次初始化的时候是一个普通的HTTP请求,之后在页面上的操作,都是通过ajax来操作的。现在我们有个需求,我们需要知道iframe里面做了什么操作。 没法改别人的代码,那我们只能监测里面的事件了,所以总归来说,要找到一种方法来检测到iframe里面的所有ajax请求。 下面是我的请求 发现无法执行 ajaxsend 求改进下 能监听到 子页面得ajax 请求 ``` <iframe id='mainIframe' name='mainIframe' src="https://mobile.peilian.com/promotion_f2?utm_source=szjs&utm_medium=cpa&utm_campaign=time0306&utm_term=&utm_content=" frameborder="0" scrolling="auto" marginwidth="0" marginheight="0" vspace="0" hspace="0" allowtransparency="true" scrolling="no" width="1500" height="900" allowfullscreen="true" ></iframe> <!--onload="ajaxSend(this.contentWindow.XMLHttpRequest, onAjaxSend);"--> <div></div> <script> iframe_add_loadevent(); function iframe_add_loadevent() { var my_frame =document.getElementById('mainIframe'); alert(1); if(my_frame){ alert(2); if(my_frame.attachEvent){ //ie alert(3); my_frame.onreadystatechange=function () { if (this.readState == 'complete') { ajaxSend(this.contentWindow.XMLHttpRequest, onAjaxSend); } }; } else{ //other alert(4); my_frame.onload = function () { alert(5); ajaxSend(this.contentWindow.XMLHttpRequest, onAjaxSend); }; } } // if(my_frame){ // my_frame.onload = function () { // ajaxSend(this.contentWindow.XMLHttpRequest, onAjaxSend); // } // } } function ajaxSend(objectOfXMLHttpRequest, callback) { alert(10); // http://stackoverflow.com/questions/3596583/javascript-detect-an-ajax-event if(!callback){ return; } var s_ajaxListener = new Object(); s_ajaxListener.tempOpen = objectOfXMLHttpRequest.prototype.open; s_ajaxListener.tempSend = objectOfXMLHttpRequest.prototype.send; s_ajaxListener.callback = function () { // this.method :the ajax method used // this.url :the url of the requested script (including query string, if any) (urlencoded) // this.data :the data sent, if any ex: foo=bar&a=b (urlencoded) alert(2); alert(this.method); callback(this.method, this.url, this.data); } objectOfXMLHttpRequest.prototype.open = function(a,b) { if (!a) var a=''; if (!b) var b=''; s_ajaxListener.tempOpen.apply(this, arguments); s_ajaxListener.method = a; s_ajaxListener.url = b; if (a.toLowerCase() == 'get') { s_ajaxListener.data = b.split('?'); s_ajaxListener.data = s_ajaxListener.data[1]; } } objectOfXMLHttpRequest.prototype.send = function(a,b) { if (!a) var a=''; if (!b) var b=''; s_ajaxListener.tempSend.apply(this, arguments); if(s_ajaxListener.method.toLowerCase() == 'post') { s_ajaxListener.data = a; } s_ajaxListener.callback(); } } function onAjaxSend(method, url, data) { alert('ajax'); console.log("method"+method); console.log(url); console.log(data); } </script> ``` 参考地址:https://blog.csdn.net/yanical/article/details/7213289

Springmvc如何根据请求参数有无callback,返回对应的jsonp或者json字符串

如题,需要获取json请求时需要ajax请求 ``` getData?callback=jQuery1830020447478396818042_1438937556784&_=1438937556855 ``` 返回的JSON字符串也带有callback参数 ``` jQuery1830020447478396818042_1438937556784(字符串) ``` 现在的问题是,怎样通过拦截器实现,判断请求中有无callback并返回对应的值。 拦截器中使用response.getWriter().write()方法时,总是会报outputstream流已被占用。

为什么Ajax调用后台Action,结果返回回调函数时,在js里没有进入回调函数?

<p>我在js里面通过ajax调用一个action,然后返回结果给回调函数,但是程序始终不进入回调函数callback,请问问题出在哪里了?</p> <pre name="code" class="js">&lt;script type="text/javascript"&gt; function chooseFile(obj) { $('uploadpictureForm').action = "${pageContext.request.contextPath}/page/uploadPicture.action"; $('uploadpictureForm').submit(); } function checkRadio(id) { if(id=="local") { $("uploadfile").style.display = "block"; $("uploadPicture").disabled = false; } if(id=="server") { $("uploadfile").style.display = "none"; $("showImg").style.display = "block"; var url = "${pageContext.request.contextPath}/page/showPicture.action"; ajax("post",url,"",callback); alert(1); } } function callback(obj) { alert(2); } &lt;/script&gt;</pre> <p>ajax.js:</p> <pre name="code" class="js">//ajax的封装 var hand;//回调函数 var xmlHttpRequest; function createXmlRequest(){ if(window.XMLHttpRequest){ xmlHttpRequest = new XMLHttpRequest(); }else{ xmlHttpRequest = new ActiveXObject("Microsoft.XMLHTTP"); } } //参数1:get/post //参数2:访问地址 //参数3:发送给服务器的数据 //参数4:回调函数 function ajax(method,url,data,handle){ createXmlRequest();//先创建核心对象 hand = handle; if(method=="get"){ url += ("?@new Date()@"+data); xmlHttpRequest.onreadystatechange = result; xmlHttpRequest.open(method,url,true); xmlHttpRequest.send(null); }else{ xmlHttpRequest.onreadystatechange = result; xmlHttpRequest.open(method,url,true); xmlHttpRequest.setRequestHeader("content-length",data.length); xmlHttpRequest.setRequestHeader("Content-Type","application/x-www-form-urlencoded"); xmlHttpRequest.send(data); } } //回调处理函数 function result(){ if(xmlHttpRequest.readyState==4&amp;&amp;xmlHttpRequest.status==200){ var data = xmlHttpRequest.responseText; hand(data); } }</pre> <p>  </p> <p> </p> <p> </p> <p>struts.xml:</p> <pre name="code" class="xml">&lt;?xml version="1.0" encoding="UTF-8"?&gt; &lt;!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"&gt; &lt;struts&gt; &lt;package name="test" extends="struts-default" namespace="/page"&gt; &lt;action name="uploadPicture" class="com.isoftstone.action.UploadPictureAction"&gt; &lt;result name="success" type="redirect"&gt;/index.jsp&lt;/result&gt; &lt;/action&gt; &lt;action name="showPicture" class="com.isoftstone.action.ShowPictureAction"&gt; &lt;result name="ajax"/&gt; &lt;/action&gt; &lt;/package&gt; &lt;/struts&gt;</pre> <p> </p>

Ajax没有调用回调函数

<div class="post-text" itemprop="text"> <p>I am trying to get a JSON object from a service running on port 8080 on my server. I have implemented the following JavaScript and PHP code to achieve this:</p> <p>JavaScript:</p> <pre><code>$.ajax({ type: 'GET', url: "mediainfo.php?file="+stream_, dataType: 'json', success: play, error: function( xhr, reply ) { play({}); } }); </code></pre> <p>mediainfo.php:</p> <pre><code>&lt;?php $url = "http://localhost:8080/media_info/" . $_GET['file']; echo file_get_contents($url); </code></pre> <p>However even if the Ajax call succeeds it never calls the callback. Strangely if it fails (e.g. if $url does not return valid JSON) it does call the callback.</p> <p>I can't figure out what's going wrong. Any help would be much appreciated.</p> <p>edit:</p> <p>callback function: </p> <pre><code>var play = function( info ) { if ( info.width &amp;&amp; info.height ) { while ( info.width &lt; 640 ) { info.width = Math.round( info.width * 1.5 ); info.height = Math.round( info.height * 1.5 ); } while( info.width &gt; 1024 ) { info.width = Math.round( info.width / 2 ); info.height = Math.round( info.height / 2 ); } } var width = info &amp;&amp; info.width || 640; var height = info &amp;&amp; info.height || 480; var flashvars = { file : stream, streamer : "rtmp://myserver.com:1935/vodplayback", 'rtmp.tunneling' : false, bufferlength : 5, autostart : true }; var paramObj = {allowfullscreen : "true", allowscriptaccess : "always"}; swfobject.embedSWF("http://myserver.com:8080/flu/jwplayer.swf", "videoplayer", width, height, "10.3", false, flashvars, paramObj, {id : "jwplayer", name : "jwplayer"}); } </code></pre> <p>response from mediinfo.php:</p> <pre><code>{"duration":69960.0,"width":720,"height":406} </code></pre> </div>

jquery callback 带参数问题

今天使用jquery 的animate函数, ``` 发现如果callback带参数的话就会出各种错,那么如何解决这个问题? ```

jquery ajax 多请求刷新页面

如题,我想在主页面向后台发请求,然后把后台返回的结果加载到页面中去。页面一共有七个,前六个都是正常的,但到最后一个的时候先弹出undefined,然后才是返回的页面。这是为什么呢? $(".subequip").each(function(){ obj=$(this); id=obj.attr("id"); alert(id); $.ajax({ async: false, url:"{$bUrl}/devattr/devattr.php?id="+id, success: function(data,textStatus) { obj.html(data); alert(data); obj.trigger("create"); }, }); });

快应用问题:怎么将回调函数中的返回值赋给外部变量?

我是这样写的,但是赋值不上,仍然为空,请教一下 ``` onReady() { let len = this.markers.length + 1 this.watchHeight = len > 3 ? '450' : len*150+'' const that = this prompt.showToast({ message: '请稍后,加载中...' }) device.getUserId({ success (res){ that.userId = res.userId }, fail (data, code) { prompt.showToast({ message: '出错了!错误码为:'+code }) } }) prompt.showDialog({ message: that.userId }) } ```

怎样取消ajax的请求?

用ajax实现的IPTV系统中,为了防止因为一个操作超时使得页面长时间没有任何反应(blocked)。在客户端用js做了一个定时,从发送ajax请求开始,如果5s后没有接到response就取消当前请求。而此时只是并没有取消服务器端的操作,如果此时做的是查询也就罢了,但是如果是购买等等操作呢? 一)超时后取消当前操作。可以有两种做法: 1.设定定时,如果超过5s,令canceled=true。添加callback: [code="javascript"]addCallback(function(){ if(!canceled){ callback方法。。。 } } )[/code] 2.调用XMLHttpRequest的abort方法, 问:两者有什么区别吗?XMLHttpRequest的abort方法实现原理是什么? 二)这只是取消客户端的显示。如果是够买等操作,客户端显示“购买超时”,但是服务器5s后却是购买成功。这个有什么办法吗? 三)本系统不含收费系统,收费是通过调用另一系统的web service方法完成的。怎么取消一个web service调用,或者达到同样的效果?

NodeJS的回调函数中的变量怎么在回调函数外使用

例如fs的readFile方法: fs.readFile(filename, [options], callback) 其中读取出来的数据是存在回调函数的参数data中,可是我想在回调函数外,使用读取出的数据,该怎么写? 我刚开始学,纯小白,各位大神写详细点儿,谢谢!

调用回调函数程序崩溃

我设置了pExtDevfunCb用于接收回调函数的指针 boost::function<void (int, const char*, size_t)> pExtDevfunCb; 这是回调函数指针赋值实现 void ExtDevApp::setCallback(const boost::function<void(int, const char*, size_t)>& callback) { pExtDevfunCb = callback; if(pExtDevfunCb) { OspPrintf(TRUE, FALSE, "[ExtDevApp]pExtDevfunCb is valid \n"); } } ExtDevApp是我的类,里面有pExtDevfunCb和setCallback,在程序开始时就设置了回调 boost::shared_ptr<ExtDevApp> pTmpExtDevImpl(new ExtDevApp); m_ExtDevPtr = pTmpExtDevImpl; m_ExtDevPtr->setCallback(SubAppMsgRecvCb); 这是使用回调的地方,而且在if()时就出错,函数体没进去。 if(pExtDevfunCb) pExtDevfunCb(EXTDEC_SERIAL_MSG_STATE, (const char*)data, len); 看起来pExtDevfunCb像野指针的样子,找不到原因。希望有大神讲解一下

关于在CALLBACK Wndproc中静态变量的问题

代码如下:为为什么N的值不是从编辑框中输入的值呢?? ``` LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { static int N; static HWND hEdit,hButton; char szBuffer[10]; HDC hdc; PAINTSTRUCT ps; switch (message) { case WM_CREATE: hEdit = CreateWindow(TEXT("edit"), NULL, WS_CHILD | WS_VISIBLE|WS_BORDER, 0,0,0,0, hwnd, (HMENU)ID_EDIT, ((LPCREATESTRUCT)lParam)->hInstance, NULL); hButton = CreateWindow(TEXT("Button"), TEXT("Button"), WS_CHILD | WS_VISIBLE, 500, 300, 7* cxChar, 2 * cyChar, hwnd, (HMENU)ID_Button,((LPCREATESTRUCT)lParam)->hInstance, NULL); return 0; case WM_SIZE: MoveWindow(hEdit, cxClient - 100, 2 * cyChar, 10 * cxChar, 2* cyChar, TRUE); return 0; case WM_COMMAND: switch (LOWORD(wParam)) { case 1: //SetFocus(hEdit); GetDlgItemText(hwnd, ID_EDIT, szBuffer, TRUE); N=atof(szBuffer); break; case 2: InvalidateRect(hwnd, NULL, TRUE); break; } return 0; ```

从ajax post响应中调用函数

<div class="post-text" itemprop="text"> <p>I am using a graph <a href="http://almende.github.io/chap-links-library/js/graph/examples/example01_basis.html" rel="nofollow">library</a> which is using javascript. I have to run this script after getting the data with another ajax script. But when I use the script</p> <pre><code> var request, response; var newUrl = url + '/thermometer/getLastHourData'; var data = $.ajax({ url: newUrl, data: request, dataType: "json", method: "post", success: function(data) { drawGraph(); return data; }, error: function() { alert('Error occured'); } }); </code></pre> <p>Also the drawGraph function is </p> <pre><code> google.load("visualization", "1"); // Set callback to run when API is loaded google.setOnLoadCallback(drawVisualization); // Called when the Visualization API is loaded. function drawVisualization() { // Create and populate a data table. var data = new google.visualization.DataTable(); data.addColumn('datetime', 'time'); data.addColumn('number', 'Function A'); data.addColumn('number', 'Function B'); function functionA(x) { return Math.sin(x / 25) * Math.cos(x / 25) * 50 + (Math.random()-0.5) * 10; } function functionB(x) { return Math.sin(x / 50) *50 + Math.cos(x / 7) * 75 + (Math.random()-0.5) * 20 + 20; } // create data var d = new Date(2010, 9, 23, 20, 0, 0); for (var i = 0; i &lt; 100; i++) { data.addRow([new Date(d), functionA(i), functionB(i)]); d.setMinutes(d.getMinutes() + 1); } // specify options var options = { "width": "100%", "height": "350px" }; // Instantiate our graph object. var graph = new links.Graph(document.getElementById('mygraph')); // Draw our graph with the created data and options graph.draw(data, options); } </code></pre> <p>(I did not change it what I need to since checking the code is running correctly)</p> <p>drawGraph start to wait for loading google.com for some library but when I use the function drawGraph without calling from the ajax function, it works as in the link that I mention at the begining. </p> <p>How can I call this graph function from ajax without problem ?</p> </div>

node.js的函数调用问题,异步调用

![![![图片说明](https://img-ask.csdn.net/upload/201608/02/1470111608_980547.png)图片说明](https://img-ask.csdn.net/upload/201608/02/1470111595_850026.png)图片说明](https://img-ask.csdn.net/upload/201608/02/1470111585_224745.png) dao中封装查询,然后在index.js中调用,请正确例子,到底异步改怎么来实现, 类似 java中 string ss=aaa()

ajax callback 函数中 写多个document.write()

ajax callback 函数中执行如下js: document.open("text/html","replace"); document.write("bb"); document.write("cc"); document.close(); 浏览器整个是白的; 如果去掉document.open("text/html","replace"); 浏览器只显示"bb"; 请问这是为什么呢? 怎么才能把bbcc都显示出来呢? [b]问题补充:[/b] 有两个JSP页面如下 ab.jsp <html> <head> <title></title> <script type="text/javascript"> function aa(jsp){ var xmlreq = false; if (window.XMLHttpRequest) { xmlreq = new XMLHttpRequest(); } else if (window.ActiveXObject) { try { xmlreq = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e1) { try { xmlreq = new ActiveXObject("Microsoft.XMLHTTP"); } catch (e2) { xmlreq = false; } } } xmlreq.onreadystatechange = getReadyStateHandler(xmlreq, showMs); xmlreq.open("post", jsp, true); xmlreq.send(); } function getReadyStateHandler(xmlreq, responseHandler){ return function(){ if (xmlreq.readyState == 4) { if (xmlreq.status == 200) { responseHandler(xmlreq); } else { alert("HTTP error " + xmlreq.status + ": " + xmlreq.statusText); } } } } function showMs(xmlreq){ alert(xmlreq.responseText); document.open("text/html","replace"); document.write("bb"); document.write("cc"); document.close(); } </script> </head> <body> <input type="button" name="query1" value="aa.jsp" onClick="aa('aa.jsp')" /> <input type="button" name="query2" value="ab.jsp" onClick="aa('ab.jsp')" /> </body> </html> aa.jsp <html> <head> <title></title> </head> <body> aaaaaa </body> </html> 访问ab.jsp 点击两个按钮就会发现 只有点击第二个按钮才会显示"bbcc" 击第一个按钮浏览器整个是白的。 [b]问题补充:[/b] 是会出现我所说的问题吧? 该不会是我浏览器的问题吧! [b]问题补充:[/b] ajax callback 函数中执行如下js: document.open("text/html","replace"); document.write("bb"); document.write("cc"); document.close(); 浏览器整个是白的; 如果去掉document.open("text/html","replace"); 浏览器只显示"bb"; 请问这是为什么呢? 怎么才能把bbcc都显示出来呢? [b]问题补充:[/b] 有两个JSP页面如下 ab.jsp <html> <head> <title></title> <script type="text/javascript"> function aa(jsp){ var xmlreq = false; if (window.XMLHttpRequest) { xmlreq = new XMLHttpRequest(); } else if (window.ActiveXObject) { try { xmlreq = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e1) { try { xmlreq = new ActiveXObject("Microsoft.XMLHTTP"); } catch (e2) { xmlreq = false; } } } xmlreq.onreadystatechange = getReadyStateHandler(xmlreq, showMs); xmlreq.open("post", jsp, true); xmlreq.send(); } function getReadyStateHandler(xmlreq, responseHandler){ return function(){ if (xmlreq.readyState == 4) { if (xmlreq.status == 200) { responseHandler(xmlreq); } else { alert("HTTP error " + xmlreq.status + ": " + xmlreq.statusText); } } } } function showMs(xmlreq){ alert(xmlreq.responseText); document.open("text/html","replace"); document.write("bb"); document.write("cc"); document.close(); } </script> </head> <body> <input type="button" name="query1" value="aa.jsp" onClick="aa('aa.jsp')" /> <input type="button" name="query2" value="ab.jsp" onClick="aa('ab.jsp')" /> </body> </html> aa.jsp <html> <head> <title></title> </head> <body> aaaaaa </body> </html> 访问ab.jsp 点击两个按钮就会发现 只有点击第二个按钮才会显示"bbcc" 击第一个按钮浏览器整个是白的。 [b]问题补充:[/b] 是会出现我所说的问题吧? 该不会是我浏览器的问题吧! 我用的是IE6 [b]问题补充:[/b] :shock: 没人遇见过这样的问题吗? [b]问题补充:[/b] 改成 xmlreq.open("post", jsp, false); 就可以了 不知道异步时出了什么问题?

在中国程序员是青春饭吗?

今年,我也32了 ,为了不给大家误导,咨询了猎头、圈内好友,以及年过35岁的几位老程序员……舍了老脸去揭人家伤疤……希望能给大家以帮助,记得帮我点赞哦。 目录: 你以为的人生 一次又一次的伤害 猎头界的真相 如何应对互联网行业的「中年危机」 一、你以为的人生 刚入行时,拿着傲人的工资,想着好好干,以为我们的人生是这样的: 等真到了那一天,你会发现,你的人生很可能是这样的: ...

程序员请照顾好自己,周末病魔差点一套带走我。

程序员在一个周末的时间,得了重病,差点当场去世,还好及时挽救回来了。

我以为我学懂了数据结构,直到看了这个导图才发现,我错了

数据结构与算法思维导图

String s = new String(" a ") 到底产生几个对象?

老生常谈的一个梗,到2020了还在争论,你们一天天的,哎哎哎,我不是针对你一个,我是说在座的各位都是人才! 上图红色的这3个箭头,对于通过new产生一个字符串(”宜春”)时,会先去常量池中查找是否已经有了”宜春”对象,如果没有则在常量池中创建一个此字符串对象,然后堆中再创建一个常量池中此”宜春”对象的拷贝对象。 也就是说准确答案是产生了一个或两个对象,如果常量池中原来没有 ”宜春” ,就是两个。...

技术大佬:我去,你写的 switch 语句也太老土了吧

昨天早上通过远程的方式 review 了两名新来同事的代码,大部分代码都写得很漂亮,严谨的同时注释也很到位,这令我非常满意。但当我看到他们当中有一个人写的 switch 语句时,还是忍不住破口大骂:“我擦,小王,你丫写的 switch 语句也太老土了吧!” 来看看小王写的代码吧,看完不要骂我装逼啊。 private static String createPlayer(PlayerTypes p...

Linux面试题(2020最新版)

文章目录Linux 概述什么是LinuxUnix和Linux有什么区别?什么是 Linux 内核?Linux的基本组件是什么?Linux 的体系结构BASH和DOS之间的基本区别是什么?Linux 开机启动过程?Linux系统缺省的运行级别?Linux 使用的进程间通信方式?Linux 有哪些系统日志文件?Linux系统安装多个桌面环境有帮助吗?什么是交换空间?什么是root帐户什么是LILO?什...

将一个接口响应时间从2s优化到 200ms以内的一个案例

一、背景 在开发联调阶段发现一个接口的响应时间特别长,经常超时,囧… 本文讲讲是如何定位到性能瓶颈以及修改的思路,将该接口从 2 s 左右优化到 200ms 以内 。 二、步骤 2.1 定位 定位性能瓶颈有两个思路,一个是通过工具去监控,一个是通过经验去猜想。 2.1.1 工具监控 就工具而言,推荐使用 arthas ,用到的是 trace 命令 具体安装步骤很简单,大家自行研究。 我的使用步骤是...

学历低,无法胜任工作,大佬告诉你应该怎么做

微信上收到一位读者小涛的留言,大致的意思是自己只有高中学历,经过培训后找到了一份工作,但很难胜任,考虑要不要辞职找一份他能力可以胜任的实习工作。下面是他留言的一部分内容: 二哥,我是 2016 年高中毕业的,考上了大学但没去成,主要是因为当时家里经济条件不太允许。 打工了三年后想学一门技术,就去培训了。培训的学校比较垃圾,现在非常后悔没去正规一点的机构培训。 去年 11 月份来北京找到了一份工...

JVM内存结构和Java内存模型别再傻傻分不清了

JVM内存结构和Java内存模型都是面试的热点问题,名字看感觉都差不多,网上有些博客也都把这两个概念混着用,实际上他们之间差别还是挺大的。 通俗点说,JVM内存结构是与JVM的内部存储结构相关,而Java内存模型是与多线程编程相关,本文针对这两个总是被混用的概念展开讲解。 JVM内存结构 JVM构成 说到JVM内存结构,就不会只是说内存结构的5个分区,而是会延展到整个JVM相关的问题,所以先了解下

和黑客斗争的 6 天!

互联网公司工作,很难避免不和黑客们打交道,我呆过的两家互联网公司,几乎每月每天每分钟都有黑客在公司网站上扫描。有的是寻找 Sql 注入的缺口,有的是寻找线上服务器可能存在的漏洞,大部分都...

Google 与微软的浏览器之争

浏览器再现“神仙打架”。整理 | 屠敏头图 | CSDN 下载自东方 IC出品 | CSDN(ID:CSDNnews)从 IE 到 Chrome,再从 Chrome 到 Edge,微软与...

讲一个程序员如何副业月赚三万的真实故事

loonggg读完需要3分钟速读仅需 1 分钟大家好,我是你们的校长。我之前讲过,这年头,只要肯动脑,肯行动,程序员凭借自己的技术,赚钱的方式还是有很多种的。仅仅靠在公司出卖自己的劳动时...

上班一个月,后悔当初着急入职的选择了

最近有个老铁,告诉我说,上班一个月,后悔当初着急入职现在公司了。他之前在美图做手机研发,今年美图那边今年也有一波组织优化调整,他是其中一个,在协商离职后,当时捉急找工作上班,因为有房贷供着,不能没有收入来源。所以匆忙选了一家公司,实际上是一个大型外包公司,主要派遣给其他手机厂商做外包项目。**当时承诺待遇还不错,所以就立马入职去上班了。但是后面入职后,发现薪酬待遇这块并不是HR所说那样,那个HR自...

女程序员,为什么比男程序员少???

昨天看到一档综艺节目,讨论了两个话题:(1)中国学生的数学成绩,平均下来看,会比国外好?为什么?(2)男生的数学成绩,平均下来看,会比女生好?为什么?同时,我又联想到了一个技术圈经常讨...

搜狗输入法也在挑战国人的智商!

故事总是一个接着一个到来...上周写完《鲁大师已经彻底沦为一款垃圾流氓软件!》这篇文章之后,鲁大师的市场工作人员就找到了我,希望把这篇文章删除掉。经过一番沟通我先把这篇文章从公号中删除了...

85后蒋凡:28岁实现财务自由、34岁成为阿里万亿电商帝国双掌门,他的人生底层逻辑是什么?...

蒋凡是何许人也? 2017年12月27日,在入职4年时间里,蒋凡开挂般坐上了淘宝总裁位置。 为此,时任阿里CEO张勇在任命书中力赞: 蒋凡加入阿里,始终保持创业者的冲劲,有敏锐的...

总结了 150 余个神奇网站,你不来瞅瞅吗?

原博客再更新,可能就没了,之后将持续更新本篇博客。

副业收入是我做程序媛的3倍,工作外的B面人生是怎样的?

提到“程序员”,多数人脑海里首先想到的大约是:为人木讷、薪水超高、工作枯燥…… 然而,当离开工作岗位,撕去层层标签,脱下“程序员”这身外套,有的人生动又有趣,马上展现出了完全不同的A/B面人生! 不论是简单的爱好,还是正经的副业,他们都干得同样出色。偶尔,还能和程序员的特质结合,产生奇妙的“化学反应”。 @Charlotte:平日素颜示人,周末美妆博主 大家都以为程序媛也个个不修边幅,但我们也许...

MySQL数据库面试题(2020最新版)

文章目录数据库基础知识为什么要使用数据库什么是SQL?什么是MySQL?数据库三大范式是什么mysql有关权限的表都有哪几个MySQL的binlog有有几种录入格式?分别有什么区别?数据类型mysql有哪些数据类型引擎MySQL存储引擎MyISAM与InnoDB区别MyISAM索引与InnoDB索引的区别?InnoDB引擎的4大特性存储引擎选择索引什么是索引?索引有哪些优缺点?索引使用场景(重点)...

如果你是老板,你会不会踢了这样的员工?

有个好朋友ZS,是技术总监,昨天问我:“有一个老下属,跟了我很多年,做事勤勤恳恳,主动性也很好。但随着公司的发展,他的进步速度,跟不上团队的步伐了,有点...

我入职阿里后,才知道原来简历这么写

私下里,有不少读者问我:“二哥,如何才能写出一份专业的技术简历呢?我总感觉自己写的简历太烂了,所以投了无数份,都石沉大海了。”说实话,我自己好多年没有写过简历了,但我认识的一个同行,他在阿里,给我说了一些他当年写简历的方法论,我感觉太牛逼了,实在是忍不住,就分享了出来,希望能够帮助到你。 01、简历的本质 作为简历的撰写者,你必须要搞清楚一点,简历的本质是什么,它就是为了来销售你的价值主张的。往深...

离职半年了,老东家又发 offer,回不回?

有小伙伴问松哥这个问题,他在上海某公司,在离职了几个月后,前公司的领导联系到他,希望他能够返聘回去,他很纠结要不要回去? 俗话说好马不吃回头草,但是这个小伙伴既然感到纠结了,我觉得至少说明了两个问题:1.曾经的公司还不错;2.现在的日子也不是很如意。否则应该就不会纠结了。 老实说,松哥之前也有过类似的经历,今天就来和小伙伴们聊聊回头草到底吃不吃。 首先一个基本观点,就是离职了也没必要和老东家弄的苦...

男生更看重女生的身材脸蛋,还是思想?

往往,我们看不进去大段大段的逻辑。深刻的哲理,往往短而精悍,一阵见血。问:产品经理挺漂亮的,有点心动,但不知道合不合得来。男生更看重女生的身材脸蛋,还是...

什么时候跳槽,为什么离职,你想好了么?

都是出来打工的,多为自己着想

程序员为什么千万不要瞎努力?

本文作者用对比非常鲜明的两个开发团队的故事,讲解了敏捷开发之道 —— 如果你的团队缺乏统一标准的环境,那么即使勤劳努力,不仅会极其耗时而且成果甚微,使用...

为什么程序员做外包会被瞧不起?

二哥,有个事想询问下您的意见,您觉得应届生值得去外包吗?公司虽然挺大的,中xx,但待遇感觉挺低,马上要报到,挺纠结的。

当HR压你价,说你只值7K,你该怎么回答?

当HR压你价,说你只值7K时,你可以流畅地回答,记住,是流畅,不能犹豫。 礼貌地说:“7K是吗?了解了。嗯~其实我对贵司的面试官印象很好。只不过,现在我的手头上已经有一份11K的offer。来面试,主要也是自己对贵司挺有兴趣的,所以过来看看……”(未完) 这段话主要是陪HR互诈的同时,从公司兴趣,公司职员印象上,都给予对方正面的肯定,既能提升HR的好感度,又能让谈判气氛融洽,为后面的发挥留足空间。...

面试:第十六章:Java中级开发(16k)

HashMap底层实现原理,红黑树,B+树,B树的结构原理 Spring的AOP和IOC是什么?它们常见的使用场景有哪些?Spring事务,事务的属性,传播行为,数据库隔离级别 Spring和SpringMVC,MyBatis以及SpringBoot的注解分别有哪些?SpringMVC的工作原理,SpringBoot框架的优点,MyBatis框架的优点 SpringCould组件有哪些,他们...

面试阿里p7,被按在地上摩擦,鬼知道我经历了什么?

面试阿里p7被问到的问题(当时我只知道第一个):@Conditional是做什么的?@Conditional多个条件是什么逻辑关系?条件判断在什么时候执...

终于懂了TCP和UDP协议区别

终于懂了TCP和UDP协议区别

立即提问
相关内容推荐