0

有没有办法在Ajax调用中调用 JavaScript 文件并在该文件中使用逻辑?

例如,我目前正在使用Sencha Touch调用 JSON 文件,如下所示:

Ext.Ajax.request({
    url : 'resources/data/userdata.json',
        headers : {
            "Content-Type" : "application/json"
        },
        callback : function (options, success, response) {
            obj = JSON.parse(response.responseText);
            for (var i = 0; i < obj.length; i++) {
                console.log(obj[i].name);
            }
        }
    });

但是是否有可能调用一个 JavaScript 文件并根据传入的参数在该文件中执行一些逻辑?

我知道我可以用服务器文件(ASP.NET、PHP 等)来做到这一点......我只是想知道这是否可以使用 JavaScript 文件。

我尝试调用 window.onload 函数或使用立即函数,但我仍然将所有文本返回到文件中,而不仅仅是我试图返回的 JSON...:

(function(){
    return '[{ "name": "todd", "lastname":"vance"}, { "name": "joe", "lastname":"schmoe"}] ';
})();
4

2 回答 2

1

您需要评估从 Ajax 获得的结果,eval(myajaxresponse);. 这可以调用其中的 JavaScript 代码,或者它可以注册函数以便您以后使用它们。您可以在 Stack Overflow 问题Calling a JavaScript function returned from an Ajax response中获得更多信息。

于 2013-04-03T17:28:27.360 回答
1

您始终可以将函数的字符串表示形式分配给 JSON 中的键:

methods.json用法(基于您的代码):

return '{method: ["(function(arg1, arg2){// do stuff})", "(function(arg1){// do other stuff})"]}';

...

var args = [arg1, arg2, argsetc];
Ext.Ajax.request({
    url: 'resources/data/userdata.json',
    headers: {
            "Content-Type": "application/json"
    },
    callback: function (options, success, response) {
        obj = JSON.parse(response.responseText);
        for (var i = 0; i < obj.method.length; i++) {
            var method = eval(obj.method[i]);
            method.apply(method, args); // Executes the method with arguments
        }
    }
});

还要确保{}在 JSON 中包含前面和后面的内容,以便对其进行解析并按预期工作。;)

于 2013-04-03T17:30:26.423 回答