动态加载js并调用其中指定名称方法

js动态调用方法的函数:

// 添加指定位置的js(url eg. js/my.js)
function addScript(url) {
    var script = document.createElement('script');
    script.setAttribute('type', 'text/javascript');
    script.setAttribute('src', url);
    document.getElementsByTagName('head')[0].appendChild(script);
}

// 调用指定名称的方法,有一个入参
function call(funcName, par) {
    var target = funcName + "('" + par + "')";
    var res = eval('(' + target + ')');   // 如果返回值是json对象,必须按照此格式,多加一层括号,因为json外部是{}包住,会被js误认为是执行脚本
    return res;
}

$(function(){  
    $("#btnTest").click(function () {     
      var res = call('fun1', 'myApp');
      if (res == null) {
        alert("获取数据异常");
        return;
      }

      if (res.code == "200") {
      if (!res.content) {
        alert("无信息");
        return;
       }
   
         alert(res.content);
      }
      else
        alert(res.message);
    });
});

如,类似有如下my.js:

function fun1(appName) {
    var url = "http://127.0.0.1:12345/api/version?app=" + appName+ "";
    //jQuery.support.cors = true;    
    var obj = { code: "300", message: "", content: "" };
    $.ajax({
        url: url,
        timeout: 2000,
        type: "get",
        dataType: "json",
        async: false,
        success: function (data) {
            obj.code = data.Code;
            obj.message = data.Message;
            obj.content = data.Content;
        },
        error: function (e, d) {
            console.log(e);
            obj.code = "500";
            obj.message = e.statusText;
            obj.content = "";
        }
    });

    return obj;
}
原文地址:https://www.cnblogs.com/seanyan/p/14953880.html