我正在尝试调用在Ajax调用中发送的JavaScript函数
执行从Ajax调用返回的JavaScript函数的正确方法是什么?
假设在Ajax调用之前脚本看起来像这样
<script>
function start(){
console.log('1');
}
</script>
我收到了
<script>
function start(){
console.log('2');
}
</script>
这是我现在的代码
nav = $('.js-as'),
$content = $('.js-content'),
$status = $('.js-status'),
$script = $('.js-script'),
$.ajax({
url: '/ajax',
cache: false,
beforeSend: function() {
if (isSupported('transition')) $status.removeClass('start done');
fadeTimer = setTimeout(function() {
if (isSupported('transition')) $status.addClass('start');
}, 100); // Avoid fadeTimer() if content already in cache
},
success: function(data) {
if (fadeTimer) clearTimeout(fadeTimer);
$nav.removeClass('selected');
stateLink(e, 'active');
handler(data);
}
});
handler = function(data) { // Response
d.title = data.pagetitle;
$content.html(data.content);
$script.html(data.script); // my new script
eval(start()); // execute it
};
更新:解决方案 使用jQuery.globalEval解决了这个问题
答案 0 :(得分:0)
使用带参数的一个函数。
类似的东西:
<script>
function start(num){
console.log(num);
}
</script>
所以在AJAX之前调用tou可以调用start(1)
,在AJAX调用之后你可以调用start(2)
答案 1 :(得分:0)
var start = function(){
console.log(1);
}
ajax调用后
start = function(){
console.log(2);
}
start();
// output "2"