function funGetItemText(selectedVal,typeID) {
var itemText="";
$.ajax({
type: "POST",
url: "/Service/DictionaryService.asmx/GetDictionaryList",
data: "{PageIndex:0,PageSize:0,name:'',typeid:" + typeID + ",OrderField:''}",
contentType: "application/json",
dataType: "json",
success: function(result) {
var json = window["eval"]("(" + result.d + ")");
var list = json.ListData;
$.each(list, function(i) {
var item = list[i];
if (item.OrderIndex == selectedVal) {
itemText=item.ItemText;
}
});
}
});
return itemText;
}为什么funGetItemText的返回值还是为空呢?
var itemText="";
$.ajax({
type: "POST",
url: "/Service/DictionaryService.asmx/GetDictionaryList",
data: "{PageIndex:0,PageSize:0,name:'',typeid:" + typeID + ",OrderField:''}",
contentType: "application/json",
dataType: "json",
success: function(result) {
var json = window["eval"]("(" + result.d + ")");
var list = json.ListData;
$.each(list, function(i) {
var item = list[i];
if (item.OrderIndex == selectedVal) {
itemText=item.ItemText;
}
});
}
});
return itemText;
}为什么funGetItemText的返回值还是为空呢?
return itemText;都返回了, 这个还没进呢 success: function(result) {
function funGetItemText(selectedVal,typeID) {
var itemText="";
$.ajax({
type: "POST",
url: "/Service/DictionaryService.asmx/GetDictionaryList",
data: "{PageIndex:0,PageSize:0,name:'',typeid:" + typeID + ",OrderField:''}",
contentType: "application/json",
dataType: "json",
success: function(result) {
var json = window["eval"]("(" + result.d + ")");
var list = json.ListData;
$.each(list, function(i) {
var item = list[i];
if (item.OrderIndex == selectedVal) {
itemText=item.ItemText;
alert(itemText);//结果不为空
}
});
}
});
alert(itemText);//结果显示为空
return itemText;
}
function funGetItemText(selectedVal,typeID) {
var itemText="";
$.ajax({
type: "POST",
url: "/Service/DictionaryService.asmx/GetDictionaryList",
data: "{PageIndex:0,PageSize:0,name:'',typeid:" + typeID + ",OrderField:''}",
contentType: "application/json",
dataType: "json",
success: function(result) {
var json = window["eval"]("(" + result.d + ")");
var list = json.ListData;
$.each(list, function(i) {
var item = list[i];
if (item.OrderIndex == selectedVal) {
itemText=item.ItemText;
}
});
return itemText;
}
});
}
改成同步吧。
不为空的原因是在function funGetItemText中的itemText=item.ItemText;等价于var itemText = item.ItemText;因为你在最上面定义的var itemText="";已经出了作用域了。
最好还是把你所要做的操作放到那个回调函数里面去比较好点
http://www.cnblogs.com/kym/archive/2010/01/06/1640043.html
var itemText="";
$.ajax({
type: "POST",
url: "/Service/DictionaryService.asmx/GetDictionaryList",
data: "{PageIndex:0,PageSize:0,name:'',typeid:" + typeID + ",OrderField:''}",
contentType: "application/json",
dataType: "json",
async:false,/////////////肯定要同步执行,这个不用多说
error:function(){itemText="发生错误!";},//加error回调,说不定你的动态页出问题了
success: function(result) {
var json = window["eval"]("(" + result.d + ")");
var list = json.ListData;
itemText="执行进入success";/////////设置一个值,说不定没有和selectedVal配置的项,这样好知道是否执行进入了success回调
$.each(list, function(i) {
var item = list[i];
if (item.OrderIndex == selectedVal) {
itemText=item.ItemText;return false;//匹配后return false终止循环
}
});
}
});
return itemText;
}
//======>
data: {PageIndex:0,PageSize:0,name:'',typeid: typeID ,OrderField:''},
function funGetItemText(selectedVal,typeID) {
var itemText="";
$.ajax({
type: "POST",
url: "/Service/DictionaryService.asmx/GetDictionaryList",
data: "{PageIndex:0,PageSize:0,name:'',typeid:" + typeID + ",OrderField:''}",
contentType: "application/json",
dataType: "json",
async: false,
success: function(result) {
var json = window["eval"]("(" + result.d + ")");
var list = json.ListData;
$.each(list, function(i) {
var item = list[i];
if (item.OrderIndex == selectedVal) {
itemText=item.ItemText;
alert(itemText);//经测试,显示为预期结果,所以ajax应该是和后 台交互成功了。
}
});
}
});
alert(itemText)//测试显示为空,我的问题在这里,为什么会为空呢,而不是ajax与后台交互后返回的结果?
return itemText;
}
var itemText="";
$.ajax({
type: "POST",
url: "/Service/DictionaryService.asmx/GetDictionaryList",
data: "{PageIndex:0,PageSize:0,name:'',typeid:" + typeID + ",OrderField:''}",
contentType: "application/json",
dataType: "json",
async: false,
success: function(result) {
var json = window["eval"]("(" + result.d + ")");
var list = json.ListData;
$.each(list, function(i) {
var item = list[i];
if (item.OrderIndex == selectedVal) {
itemText=item.ItemText;
alert(i+"==="+itemText);/////////
}
});
}
});
alert(itemText+"---return")/////////
return itemText;
}你改成这样试试,设置为同步后应该会先输出alert(i+"==="+itemText);/////////,最后才是alert(itemText+"---return")/////////怀疑可能有多个匹配有空值的或者没有同步执行
if (item.OrderIndex == selectedVal){
itemText=item.ItemText;
return false;//匹配后return false终止循环}
结贴,哈哈!