如何在json中传递函数作为函数?

时间:2014-04-07 10:29:17

标签: javascript jquery html ajax

在arrayRec中,onShow值应该是一个函数。

以下是我的参考代码。

任何帮助?

这是我的参考代码:

if (rec.element_flag == '111'){ 
        var arrayRec = [];
        $.ajax({
            type:'GET',
            url: "/aps/one-url",                
            success: function(responseData){
                for (var i = 0; i < responseData.length; i++){
                    var recJ;
                    var newFunction1 = function onshowdata(counter){                    
                        if(responseData[counter].fields.on_show_fn != null){
                            return function responseData[counter].fields.on_show_fn;
                        }               
                        else
                        return;
                    }
                    recJ = {
                        element: responseData[i].fields.element_class,                  
                        placement: responseData[i].fields.placement,
                        title: responseData[i].fields.title,
                        content: responseData[i].fields.content,
                        onShow: newFunction1(i)                 
                    }       

                    arrayRec.push(recJ);                            
                    console.log('-------arrayRec------');
                    console.log(arrayRec)
                    aps.walk.setupBootstrap(arrayRec);      
                }                       
            },
            error: function(){
                alert('get failure');
            }               
        });
    }

尝试了很多方法,但我错过了什么?

1 个答案:

答案 0 :(得分:0)

在JSON中,只能使用文本,而不能使用对象。函数也是对象。因此,在JSON中,可以传递函数的名称,而不是函数对象。另一种方法是发送整个函数的文本,可以使用&#34; eval&#34;运行,但不推荐这种方式。

在这里使用闭合技术。在ajax代码上面定义函数,并使用其中的函数名称,这是执行此操作的标准方法。