2011-06-10 119 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