Вызов и написание функций jquery / javascript - PullRequest
0 голосов
/ 19 апреля 2010

Я думаю, что я не получил правильный синтаксис для написания функции 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 (любая) не определена»

Ответы [ 2 ]

4 голосов
/ 19 апреля 2010

Здесь две вещи не так. Во-первых, вам нужно добавить 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 голос
/ 19 апреля 2010

Должны объявлять функции с ключевым словом 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
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...