-2

我的 jquery 不会在准备好的文档上运行我的 java 脚本函数。

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);
}

任何帮助,将不胜感激。

4

2 回答 2

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)

双重编辑

此外,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"
于 2012-08-06T16:35:06.047 回答
1

尝试使用 chrome 浏览器和开发工具 (F12)。

  1. 看看错误控制台。
  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了解更多信息

于 2012-08-06T16:40:16.543 回答