为什么Tipsy会使用Ajax返回Undefined?

时间:2015-09-23 18:11:46

标签: javascript jquery json ajax tipsy

我正在使用jQuery 2.1.4。

我正在使用最新的tipsy。

我知道jQuery' .live已被弃用并使用.on。 我对这里发现的改变做了改动:

tipsy live does not work with jQuery 1.9.0

用,

if (options.trigger != 'manual') {
    var eventIn  = options.trigger == 'hover' ? 'mouseenter' : 'focus',
        eventOut = options.trigger == 'hover' ? 'mouseleave' : 'blur';
    if(options.live){
      $(this.context).on(eventIn, this.selector, enter).on(eventOut, this.selector, leave);
    } else {
      this.on(eventIn, enter).on(eventOut, leave);
    }
}

这是我页面中的Javascript,

$('svg text').tipsy({ 
        gravity: 's', 
        html: true,
        live: true,
        title: function() {
                $.ajax({
                    dataType: 'json',
                    url: "http://myserver/apihistory/emp.php?empid=123456", 
                    success: function(result){
                        alert(result.lastname);
                        return result.lastname;
                    },
                    error: function(result){
                        return 'no good';
                    }
                });
        }
    });

我得到"未定义"当我将鼠标悬停在元素上时,从醉意。我使用alert获得了正确的值。为什么不能看到价值?我的php文件正在为json发送标题,

header('Content-Type: application/json');
echo json_encode($results);

我将json作为我的dataType,所以我得到一个对象,而不是文本。当我返回result.lastname。

时,我正在发送我的姓氏文本(或者我认为)

我知道醉意的作品,因为如果我把Ajax拿出来并且只是使用" hi。"我的工具提示有效,而且我把它用在其他地方,而不是用json。

我已经在浏览器的开发工具(Chrome)中检查了标题和Javascript对象,并且我已手动浏览到该页面。我能看到,正确的数据和格式是正确的(或者我无法提醒result.lastname)。

编辑:

我阅读了链接的SO问题,我相信我现在明白了,异步部分是我的问题,"所以我在.ajax电话中使用了这些知识:

title: function(){
....
    success: function(result){
                        getLinkage(result.lastname);
                    },
   }

//...outside of tipsy               
   function getLinkage(response){
        return response;
    }

但我仍然未定义。我认为我没有正确地进行回调。我做错了什么?

编辑:

我改变了这一点。这不是回调吗?我意识到发生了什么,但我不理解解决方案。我以为我在这里有回电。

内心醉意:

    title: function(){
                return getLinkage();  //isn't this the callback?
            }

     //...outside of tipsy              
           function getLinkage(){
$.ajax({
                    dataType: 'json',
                    url: "http://myserver/apihistory/emp.php?empid=123456", 
                    success: function(result){
                        alert(result.lastname);
                        return result.lastname;
                    },
                    error: function(result){
                        return 'no good';
                    }
                });
            }

0 个答案:

没有答案