1

在网站中,我想使用 javascript 函数从文件中加载对象。我最初尝试使用 JSON,但我的 javascript 对象很复杂,并且具有一些参数的功能。有没有办法从文件中加载对象?

myObject.js(不是有效的 JSON,因为它有一个函数)

{
    "value1": "some value",
    "functionValue": function() { 
        return "function value"; 
    }
}

从文件加载对象的函数

function getFileObject(fileURL) {
    var myObject;

    $.ajax({
        url: fileURL,
        type: "GET",
        datatype: 'json',
        async: false,
        success: function (result) {
            myObject = result;
        }
     });

     return myObject;
}
4

2 回答 2

1

如果您真的必须传递函数实现,请不要使用 JSON 并评估您的文本。

function fetchFileObject(callback) {
    $.ajax({
        url: value,
        type: "GET",
        datatype: 'text',
        success: function (result) {
            var myObject = eval('('+result+')');
            callback(myObject); // do something  with myObject
        }
     });

}

但是……这不是我自己会考虑的事情。

请注意,您真的不应该使用async: false. 它现在已被弃用,并且没有任何充分的理由使用它。这就是我重构您的代码以接受回调的原因。

于 2012-09-28T10:29:22.033 回答
0

您是否尝试过使用

<script src="myobject.js" type="text/javascript"/>

在您的网页标题中添加标签并将 myobject.js 文件中的对象分配给您可以在其他 .js 文件中使用的变量?

这应该适用于单个文件(我自己没有测试过),但是如果您想在客户端动态导入文件,@dystroy的解决方案可能更合适。

于 2012-09-28T10:38:58.173 回答