下面的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?
});
});
答案 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()