2011-06-10 92 views
3

我有一个链接,我想用JAX和AJAX做一个DELETE请求。让JQuery AJAX运行返回脚本

if(confirm("Are you sure?")) { 
    $.ajax({ 
    url: $(this).attr("href"), 
    type: 'DELETE', 
    success: function(result) { 
      // Do something with the result 
     } 
    }); 
} 

result是一团Javascript我想运行。我如何获得它来运行我的返回脚本?

+2

请不要那样做。不要返回Javascript代码,不要''eval',只返回某种标识符,让你的Javascript决定怎么做。 – kapa 2011-06-10 16:10:51

+0

@bazmegakapa你是说这是为了分离关注目的还是有一个技术原因,为什么这是一个坏主意? – Drew 2011-06-10 16:12:01

+0

尽可能避免'eval'。我不认为有返回一段代码的真正原因。你可以返回某种JSON,并在你的Javascript中定义它应该发生什么。 – kapa 2011-06-10 16:14:37

回答

12
success: function(result) { 
    eval(result); 
} 
+0

安德我觉得很愚蠢。 – Drew 2011-06-10 16:10:54

+1

不要觉得愚蠢 - 如果你不经常使用它,很容易忘记内置函数。 – 65Fbef05 2011-06-10 16:12:06

+1

在这个用例中使用eval()是否有任何风险? – 2016-09-07 15:02:13

3

检查javascript Eval方法。它允许你执行代表一个字符串的js代码。

5

使用dataType: 'script'选项

$.ajax({ 
    url: $(this).attr("href"), 
    type: 'DELETE', 
    dataType: 'script' 
}); 

或者干脆,

$.getScript($(this).attr("href")); // Won't use 'DELETE' http type 
+0

不错。这更符合我的其他Javascript。 :) – Drew 2011-06-10 16:13:31