从AJAX成功发布结果并使用globalEval设置HTML

时间:2013-10-14 00:36:49

标签: javascript jquery html ajax

我有一个发布异步数据的Jquery函数

function post_data_async_globalEval(post_url, post_data, globaleval) {
$.ajax({
    type: 'POST',
    url: post_url,
    data: post_data,
    dataType: 'html',
    async: true,
    timeout: 20000, // in milliseconds ~ 20 secs
    success: function (result) {
        jQuery.globalEval(globaleval);
    }
});
}

我称之为

post_data_async_globalEval("../Internal/RTV_COM?vid=1578", "type=TM", "$('#postinnerhtml').html(result);");

我想要的就是执行这个JS函数

$('#postinnerhtml').html(result);

并将响应的html替换为来自Ajax post请求的success函数的结果变量。

但是当我执行代码时,我得到了这个错误

Uncaught ReferenceError: result is not defined

我本可以在我的成功函数中添加JS代码,但我不想只使用一个特定的JS代码,我只想解析我希望在操作成功后执行的JS代码。

2 个答案:

答案 0 :(得分:3)

您可以传递函数:

,而不是将字符串作为globaleval参数传递
function(result) {$('#postinnerhtml').html(result);}

在ajax电话中:

success: globaleval

(在这种情况下,您可能还想更改参数名称...)

[编辑]要在此处转发我的初始注释,您还可以使用本机eval()而不是jQuery.globalEval()。但是当你接受来自外部源的输入时(这里是ajax调用的结果),eval()通常被认为是邪恶的。

答案 1 :(得分:1)

如果您只想将$('#postinnerhtml').html(result);内容替换为回复,则可以安全地将success: function (result) { }移到#postinnerhtml内。 所以看起来像是:http://jsbin.com/OGOgEnO/1/edit