2017-05-18 76 views
-6

如何在文檔就緒函數中執行字符串? 這是我的字符串。如何在文檔就緒函數中執行字符串

"if(!$('#frmReportPara').validatec({employee_no_from:{required:true},employee_no_to:{required:true},division_id:{required:true}})){return;}" 
+0

EVAL?但這不是最好的解決方案......可能你應該檢查你的目標。 – Alessandro

回答

1
$(document).ready(function() { 
    str = "if(!$('#frmReportPara').validatec({employee_no_from:{required:true},employee_no_to:{required:true},division_id:{required:true}})){return;});" 
    eval(str); 
}); 
+0

不,它不工作..我已經嘗試過。 – Hashan

+1

它不工作,因爲你的字符串無效javascript – Avitus

+0

@Hashan「不工作」不是問題描述。使用[瀏覽器控制檯(開發工具)](https://webmasters.stackexchange.com/q/8525)(點擊'F12')並讀取任何錯誤。另外,在你的問題中指定你已經嘗試了什麼。您預計會展示您的研究成果! – Xufox

2

如果要執行你需要使用的通常被認爲是unsafeeval的功能之一的字符串。在此之前,你應該注意以下幾點:

  • 如果有人能夠注入的東西進入你的字符串(說你保存在數據庫中的東西),那麼他們可能在別人的瀏覽器中執行代碼,如果他們注入惡意代碼到您的數據庫中。
  • 瀏覽器無法優化的JavaScript由於eval所以你會採取一些性能命中

所以,你可以這樣做:

$(document).ready(function() { 
    var myFunc = 'console.log("Foo");' 
    eval(myFunc); 
}); 
1

您可以使用eval函數:

代碼

$(document).ready(function(){ 
    eval("if(!$('#frmReportPara').validatec({employee_no_from:{required:true},employee_no_to:{required:true},division_id:{required:true}})){return;}" 
); 
}) 

警惕though.eval()被認爲是邪惡的JavaScript

+0

它不是邪惡*(或被認爲是邪惡的)。如果你不控制輸入字符串是不安全的。 –

+0

是的,初學者很容易誤用它,這就是我的意思。 –

相關問題