这里需要什么才能在jQuery ajax post函数中按原样执行ajax服务器响应?

时间:2010-10-24 14:32:20

标签: ajax jquery

下面的jQuery函数返回此字符串:

'#prayer_date'.html("03/19/1968");

但它没有被执行,因为下面的函数不会对data变量起作用。

您需要做什么才能将上面的结果按原样在下面的函数中执行?

$('.showprayer').click( function(event) 
{
  $.post('/show_prayer', { 'name' : $(this).text() }, function(data) 
  {
      // how to execute the `data` server response as-is?
  });
});

1 个答案:

答案 0 :(得分:1)

您的回复首先需要是有效的脚本,如下所示:

$('#prayer_date').html("03/19/1968");

然后在您的函数中,您可以调用eval(),如下所示:

$('.showprayer').click( function(event) {
  $.post('/show_prayer', { 'name' : $(this).text() }, function(data) {
    eval(data);
  });
});

.... 但这几乎不是一个好的解决方案,可能有一个更好/更直接的路线去做你想要的事情。一个稍好/更安全的解决方案是使用展开的$.ajax()表单作为全局eval,如下所示:

$('.showprayer').click( function(event) {
  $.ajax({
    url: '/show_prayer',
    type: 'POST',
    data { 'name' : $(this).text() }, 
    dataType: 'script'
  });
});

不同之处在于,它使用jQuery.globalEval()将脚本粘贴在<head>中,就好像它是正常的GET请求<script>一样,而不是实际调用它上面的eval()