ajax调用后的Javascript函数

时间:2014-02-21 10:37:48

标签: javascript jquery ajax

我正在尝试调用在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解决了这个问题

2 个答案:

答案 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"