-1

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

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

 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");
      }

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

请帮我解决这个问题..

4

2 回答 2

1

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

你可以这样做:

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

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

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

success: successcallback
于 2012-09-18T07:10:31.170 回答
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");
      }
于 2012-09-18T07:11:09.377 回答