2012-08-06 67 views
-2

我的jquery不會在文檔準備好時運行我的java腳本函數。在document.ready上調用javascript

cont += "<script>"; 
cont += "$(document).ready(function() {Puma.getReasonForBTI()});"; 
cont += "</script>"; 

JS功能

Puma.getReasonForBTI = function() { 
    var reason = document.getElementById("reasonId").value; 
    var msql = "SELECT Pid FROM tPid WHERE Reason = 'reason'"; 
    sql = "action=getReasonForBTI&sql=" + encodeURIComponent(msql); 
    objAjaxAd.main_flag = "getReasonForBTI"; 
    objAjaxAd.SendQuery(sql); 
} 

任何幫助,將不勝感激。

+3

你在用'cont'做什麼?到目前爲止,我沒有看到任何可能在頁面加載時執行的JavaScript。沒有上下文,您發佈的代碼無用。 – 2012-08-06 16:32:03

+6

'cont'在哪裏發揮作用?另外,什麼是彪馬?你真的從JavaScript發送SQL? – Ryan 2012-08-06 16:32:44

+0

是否引發任何錯誤?請提供更多信息。 – Joe 2012-08-06 16:33:20

回答

2

爲什麼不直接添加DocReady到你的JS?

Puma.getReasonForBTI = function() { 
    var reason = document.getElementById("reasonId").value; 
    var msql = "SELECT Pid FROM tPid WHERE Reason = 'reason'"; 
    sql = "action=getReasonForBTI&sql=" + encodeURIComponent(msql); 
    objAjaxAd.main_flag = "getReasonForBTI"; 
    objAjaxAd.SendQuery(sql); 
} 

$(document).ready(function() { 
    Puma.getReasonForBTI() 
}); 

編輯:

另外,我想單獨和消毒它的服務器端發送reason,然後把它變成一個查詢。通過Javascript/AJAX發送SQL查詢只是要求麻煩。

仿皮代碼:

sql(" 
    SELECT Pid 
    FROM tPid 
    WHERE Reason = ? 
", $ajax.reason) 

DOUBLE編輯

而且,把reason在單引號中的字符串不評價reason值。剛剛想到我會爲您節省一些未來的頭痛

var foo = "bar"; 
console.log("The value of foo is 'foo'"); 
=> "The value of foo is 'foo'" 
console.log("The value of foo is " + foo); 
=> "The value of foo is bar" 
+0

JS位於不同的文件中。 – MasterP 2012-08-06 16:36:30

+2

@MasterP,它應該沒關係。只要從代碼中加載文件,就可以從任何文件調用DocReady – 2012-08-06 16:40:20

1

嘗試一個chrome瀏覽器和開發工具(F12)。

  1. 看一看的errorconsole。
  2. 修正錯誤
  3. 更改代碼,因爲有人可以用你的代碼從底層數據庫

更新

var reason = document.getElementById("reasonId").value; 
// reason is entered directly byy a user (or Mr. EvilHacker). 
var msql = "SELECT Pid FROM tPid WHERE Reason = 'reason'"; 
// Here you create a SQL, which may sounds like this: 

SELECT Pid FROM tPid WHERE Reason = ''; DROP table tPid;--' 

刪除任何數據,如果邪惡的黑客進入';DROP table tPid;--放入文本框中。看看owasp.org瞭解更多信息

+0

您也可以在IE(F12)或Firefox中的Firebug中使用開發工具 – 2012-08-06 16:46:22

+0

是的,這就是對的。它只是一個類似「喜歡香草或巧克力冰」的quastion。 (有一個例外,我認爲) – 2012-08-06 16:49:04

+0

coudl你解釋一下如何有人可以注入此代碼? – MasterP 2012-08-06 16:50:10