Ajax执行顺序流程及回调问题分析_基础知识

一个全局的变量var JsonData;
我这里有一个Ajax处理的方法:
JScript code:

复制代码 代码如下:

function GetJson(DataSourceName) {
$.ajax({
type: “post”,
url: “Ajax/AjaxData.ashx?MethodName=” + DataSourceName,
contentType: “application/json;”,
data: “”,
dataType: “json”,
success: function (Result) {
JsonData = Result;
},
error: function (result) {
alert(“获取信息列表错误”);
window.close();
}
});
return JsonData;
}

然后我有一个类。
JScript code:

复制代码 代码如下:

function DrawDropDownList(sFieldRuleMethod)
{
GetJson(sFieldSourceName);
var b = JsonData;
}

如此,我在执行DrawDropDownList的时候,为什么总是获取不到JsonData呢?
我打断点跟踪了下, 发现是等DrawDropDownList方法里面的所有都执行完以后才会进入GetJson方法,
请问有什么办法把GetJson里面获得的Result数据拿出来?
不要在

复制代码 代码如下:

success: function (Result) {
//Do Something
},

我就是想把获得的数据拿出来用, 因为GetJson是一个通用的方法,不想在里面执行单个的逻辑.
不能在回调中return,并且需要同步,就可以了!
另外一种放过是不建议同步的,需要给我的函数增加一个函数参数作为回调函数,将ajax的结果传递到该函数,如下代码细节:

复制代码 代码如下:

function GetJson(DataSourceName,callback) {
$.ajax({
type: “post”,
url: “Ajax/AjaxData.ashx?MethodName=” + DataSourceName,
contentType: “application/json;”,
data: “”,
dataType: “json”,
success: function (Result) {
JsonData = Result;
callback(JsonData)
},
error: function (result) {
alert(“获取信息列表错误”);
window.close();
}
});
//return JsonData;
}

时间: 2024-08-01 06:27:44

Ajax执行顺序流程及回调问题分析_基础知识的相关文章

javascript中var的重要性分析_基础知识

本文实例分析了javascript中var的重要性.分享给大家供大家参考.具体分析如下: javascript 的 var 作用是声明变量. 一般情况下不写都不会出错,但有些情况如果不写,会有不同的结果.先看下面的示例: <div id="a"></div> <script type="text/javascript"> a = 1; alert(a); </script> 上面这个例子在FF Chrome执行不会有问

Javascript中的几种继承方式对比分析_基础知识

开篇从'严格'意义上说,javascript并不是一门真正的面向对象语言.这种说法原因一般都是觉得javascript作为一门弱类型语言与类似java或c#之类的强型语言的继承方式有很大的区别,因而默认它就是非主流的面向对象方式,甚至竟有很多书将其描述为'非完全面向对象'语言.其实个人觉得,什么方式并不重要,重要的是是否具有面向对象的思想,说javascript不是面向对象语言的,往往都可能没有深入研究过javascript的继承方式,故特撰此文以供交流. 为何需要利用javascript实现继

javascript window.opener的用法分析_基础知识

window.opener 的用法 window.opener 返回的是创建当前窗口的那个窗口的引用,比如点击了a.htm上的一个链接而打开了b.htm,然后我们打算在b.htm上输入一个值然后赋予a.htm上的一个id为"name"的textbox中,就可以写为: window.opener.document.getElementById("name").value = "输入的数据"; 对于javascript中的window.opener没

JS、DOM和JQuery之间的关系示例分析_基础知识

DOM(document object model) 其实是浏览器内元素对象的一个总称 我们用JavaScript对网页进行的所有操作都是通过DOM进行的.DOM属于浏览器,而不是JavaScript语言规范里的规定的核心内容,所以如果你下载一个JavaScript语言的参考帮助文档来查的话,就连妇孺皆知的document.write方法也找不到. 文档对象模型(Document Object Model,DOM)是一种用于HTML和XML文档的编程接口.它给文档提供了一种结构化的表示方法,可以

如何获取JQUERY AJAX返回的JSON结果集实现代码_基础知识

代码如下:我写了个方法,用于查询结果,但debug过程中发现结果集有数据,我如何通过变量获取呢? JScript code 复制代码 代码如下: function getChildNodeArrayByParentID(categoryCode) { $.ajax( { type: "get", url: "DynamicMenuItemsHandler.ashx", data: { MenuItemCode: categoryCode }, async: fals

setTimeout和setInterval的浏览器兼容性分析_基础知识

无意中测试AJAXRequest浏览器兼容性的时候,发现AJAXRequest.update方法在某些情况下在IE里有问题,经过测试找到是setTimeout和setInterval的问题. 问题出现在当调用AJAXRequest.update方法时,如果带了更新间隔及更新次数,那么在IE下面就会出现问题,具体表现为带了更新间隔时是函数工作,带上更新次数时函数无法在更新指定次数后停止执行. 测试几个例子之后找到了问题所在,在IE里,setTimeout和setInterval是不支持参数传递的.

基于JavaScript 下namespace 功能的简单分析_基础知识

之前看到网易还是新浪还是什么什么网站来着,也是用类似这种东西的,当时对js只是九牛一毛的水平,当场被吓傻了.但这次,我打算亲自分析下,以后在看到就不会迷茫了. 复制代码 代码如下: //调用例子:bradio.namespace("bradio.lang.array"); //下面是百度编译后的源码,变量都是a,b,c,d...之后我会重新写一个规范点的. //好了,开始分析 bradio.namespace = function () { //创建命名空间     var a = a

Adapter适配器模式在JavaScript设计模式编程中的运用分析_基础知识

定义适配器模式(Adapter)是将一个类(对象)的接口(方法或属性)转化成客户希望的另外一个接口(方法或属性),适配器模式使得原本由于接口不兼容而不能一起工作的那些类(对象)可以一些工作.速成包装器(wrapper). 适配器的别名是包装器(wrapper),这是一个相对简单的模式.在程序开发中有许多这样的场景:当我们试图调用模块或者对象的某个接口时,却发现这个接口的格式并不符合目前的需求.这时候有两种解决办法,第一种是修改原来的接口实现,但如果原来的模块很复杂,或者我们拿到的模块是一段别人编

脚本中出现 window.open() access is denied - 拒绝访问 情况一则及分析_基础知识

也许这个状况有的朋友已经知道了,但我还是把自己的分析思路写下来给其他的朋友参考. 昨天把blog页面另存在,在本地调试和改blog皮肤. 简介: 我想在onload页面加载完时用脚本控制,把Run HTML code, CopyCode, SaveCode这三个按扭动态的添加到css类名为code_textarea的多行文本框里. 状况描述: 在非服务器端(即没有在本地服务器下调试)按扭已经全部出现在多行文本框下,但在调试脚本时(点击Run HTML code),出现拒绝访问...服务器下调试正