我认为我没有正确编写javascript函数并调用它来将其返回值赋给变量的语法。
我的功能是:
getObjName(objId){
var objName ="";
$.ajax( {
type : "GET",
url : "Object",
dataType: 'json',
data : "objId="+objId,
success : function(data) {
objName = data;
}
});
return objName;
}
我试图调用它并将其分配给变量:
var objName = getObjName(objId);
然而Eclipse告诉我“函数getObjName(any)未定义”
答案 0 :(得分:4)
这里有两件事不对。首先,您需要在function
getObjName
其次,您不能异步返回变量。如果你绝对必须这样做,你可以将ajax设置为同步,但是这将在ajax调用与服务器通信的整个过程中阻止正在运行的线程。
function getObjName(objId){
var objName ="";
$.ajax( {
async: false,
type : "GET",
url : "Object",
dataType: 'json',
data : "objId="+objId,
success : function(data) {
objName = data;
}
});
return objName;
}
答案 1 :(得分:1)
必须使用function
关键字声明函数:
function getObjName(objId){
//...
}
但无论如何,你的代码不起作用。 Ajax调用是以异步完成的,这意味着函数getObjName
将在Ajax调用完成之前返回,objName
将为空。
您可以定义您的函数以接受回调,例如:
getObjName(objId, cb){
$.ajax( {
type : "GET",
url : "Object",
dataType: 'json',
data : "objId="+objId,
success : cb // <-- call the callback on success
});
}
然后再说:
var objName;
getObjName(objId, function(data) {
objName = data; // <-- objName refers to the the variable defined
// outside this function and gets set
// after the Ajax call is finished
});