将字符串转换为jQuery ajax函数对象

3
有没有办法将这个字符串转换成 jQueryfunction/object
var str = '';
str=str+"$.ajax({ ";
str=str+"url: 'index.php', ";
str=str+"type: 'post', ";
str=str+"data: 'somevar=' + somevar, ";
str=str+"dataType: 'json', ";
str=str+"success: function(json) { ";
str=str+"alert('test'); ";
str=str+"} ";
str=str+"}); ";

我希望得到与...相同的结果。

var myFunction = $.ajax({
    url: 'index.php',
    type: 'post',
    data: 'somevar=' + somevar,
    dataType: 'json',
    success: function(json) { 
        alert('test');
    }
});

1
eval 但这是不好的做法。 - Ivan Chernykh
请查看:http://jsfiddle.net/7W4CU/ - Ivan Chernykh
@Cherniv,好的...毫不意外-您已执行了该字符串。那不是问题。无论如何感谢! 您知道如何从此字符串获取jQuery对象吗? - Yevgen
1
所以你需要这样做:var myAjaxParamObj = { url: 'index.php', type: 'post', data: 'somevar=' + somevar, dataType: 'json', success: function(json) { alert('test'); } }; - Ivan Chernykh
@Cherniv,好想法...我可以尝试解析字符串以获取参数。只需要一个解析工具 :) - Yevgen
显示剩余9条评论
1个回答

2
你可以使用函数构造器。
var your_function = new Function(str);

但是你的字符串中有两个错误,你不能放置//,因为它会注释掉后面的所有内容(你没有新的行),并且你还有一个多余的右花括号。

编辑:要获取jQuery对象,您可以执行该函数。

var somevar = 'something';
var str = '';
str=str+"return $.ajax({ ";
str=str+"url: 'index.php', ";
str=str+"type: 'post', ";
str=str+"data: 'somevar=' + somevar, ";
str=str+"dataType: 'json', ";
str=str+"success: function(json) { ";
str=str+"} ";
str=str+"}); ";

var ajax = new Function(str)();

谢谢,抱歉,这只是演示用的简单代码。已修复。无论如何,在这种情况下我将获得函数,而不是jQuery对象。 - Yevgen
非常感谢,但我不需要执行这个函数。更新问题以使其更具体。 - Yevgen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接