问题描述
myAjax=new Ajax.Request(url,{method:'get',asynchronous:'false',parameters:par,onComplete:getResults});function getResults(oriRequest){var text1=oriRequest.responseText;if(trim(text1)=="none"){alert("该用户不存在!"); return true;}else{ alert("该用户已经存在,填写无效!");return false;}我如何能从myAjax的值中得到getResults的返回值呢?
解决方案
声明一个变量不就可以了?var result;function getResults(oriRequest){//... result = false;} 如果怕出现冲突,你可以将整个script封装成一个Object:var MyObj = function() {};MyObj.prototype = { result:false, getResults: function(oriRequest) { // this.result = false; }}不过,Ajax就应该是异步的,同步的Ajax没有意义,所有的操作都必须在回调函数中执行。
解决方案二:
回LS:1.Ajax的A就是异步的意思呀(asynchronous) 2.同步请求都可以用异步请求代替,如果不能,说明思路有问题或者概念不清(比如弄不清js的作用空间)。3.你会在一个多线程应用中大量的用sychronized?或者在servlet中使用sychronized修饰service方法?4.Ajax的作用在于提高客户体验,如果请求都是同步的,浏览器动不动就僵在那里,这和非ajax应用有区别吗?非ajax应用好歹客户还知道浏览器正在刷新页面,而同步ajax请求造成的却是假死机!
解决方案三:
引用不过,Ajax就应该是异步的,同步的Ajax没有意义,所有的操作都必须在回调函数中执行。cats_tiger 解释下为什么同步的AJAX没有意义好吗?