0

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

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

Uncaught ReferenceError: result is not defined

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

4

2 回答 2

3

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

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

在ajax调用中:

success: globaleval

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

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

于 2013-10-15T13:30:24.317 回答
1

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

于 2013-10-14T03:52:44.120 回答