将函数传递给jquery中的另一个函数?

时间:2012-09-18 07:08:22

标签: html5 jquery

我在函数参数中传递了json obj。 Json包含用户ID,密码,成功调用和错误调用。

我想通过ajax服务对用户进行身份验证。如果服务返回成功,则访问successcallback函数或返回错误,然后访问errorcallback函数。

 JSON Obj : Json_Obj =  { "UserId" : "uid", 
                           "Password" : "pwd", 
                           "Success_CB" : "successcallback()",
                           "Failure_CB" : "errorcallback()",
                          };

我能够解析Json_Obj

  Authentication = function(data) {
    var json_data = $.parseJSON(data);
    $.ajax({
           type: "GET",
            .
            .
           success:function(data){
             json_data.Success_CB;   // Unable to Execute the success call back function.
            },
             error:function(xhr,err){
                    json_data.Failure_CB
             }
   });
 }          

   // Call Back Functions 

      successcallback(){
           alert("Success");
      }
      errorcallback(){
           alert("Error");
      }

我无法访问/执行回调函数。

请帮我解决这个问题..

2 个答案:

答案 0 :(得分:1)

json_data.Success_CB是一个字符串,而不是函数。

你可以这样做:

success:function(data){
    eval(json_data.Success_CB+'();');
}

但是,您可能更愿意使用开关,而不是评估任何收到的代码。

当然,如果要调用的函数与精确数据无关,您可以直接执行

success: successcallback

答案 1 :(得分:0)

你的意思是这样吗?

  Authentication = function(data) {
    var json_data = $.parseJSON(data);
    $.ajax({
           type: "GET",
           success:function(data){
                successcallback();
           },
           error:function(xhr,err){
                errorcallback();
           }
   });
 }          

   // Call Back Functions 

      successcallback(){
           alert("Success");
      }
      errorcallback(){
           alert("Error");
      }