我有一个发布异步数据的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代码。
答案 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