调用和编写jquery / javascript函数

时间:2010-04-19 06:20:30

标签: javascript jquery function

我认为我没有正确编写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)未定义”

2 个答案:

答案 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
});