从成功的AJAX帖子中获取结果,并使用globalEval设置HTML

Get result from sucess AJAX post and set HTML using globalEval

本文关键字:globalEval HTML 设置 结果 获取 成功 AJAX      更新时间:2023-09-26

>我有一个异步发布数据的 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 请求的成功函数的结果变量。

但是当我执行代码时出现此错误

Uncaught ReferenceError: result is not defined

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

您可以传递一个函数,而不是将字符串作为全局变量参数传递:

function(result) {$('#postinnerhtml').html(result);}

在 ajax 调用中:

success: globaleval

(顺便说一句,在这种情况下,您可能还想更改参数名称...

[编辑] 为了在这里传达我最初的评论,你也可以使用原生的 eval() 而不是 jQuery.globalEval()。然而,当你接受来自外部源的输入时,eval() 通常被认为是邪恶的(这里是 ajax 调用的结果)。

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