我可以在ajax代码中编写SQL更新吗?

时间:2015-11-17 15:31:32

标签: javascript jquery ajax sql-server-2008

我一直在研究一个需要更新SQL表的ajax代码。我不确定我是否可以在ajax中编写SQL代码,因为我对AJAX是全新的。在我尝试的时候,我遇到了问题,即当我在ajax代码中编写SQL更新代码时,它会给我一个错误,说“" Uncaught Syntax Error:Missing catch”或者在try"之后。这是我正在处理的代码:

$("#ktId").change(function(){
var cataid = $("#ktId option:selected").val();
var tktid = $(this).attr('tktid');
if (tktid != '') {
    $.ajax({
        async: false,
        type : 'POST',
        url : 'ajax/ticketload_test.asp',
        data : { cataid: cataid, tktid: tktid },
        success : function(responseData) {
        try {

            SQL = "UPDATE tbltkt SET ticketType = '& cataid &' WHERE id = '" & Request("tktid")& "'"
            }
        } 
        catch(e) {/*ignore*/}

        }
    });
} else {
        alert("Please fill in the catagory!");
    }
});

背景: 在传统的ASP中,我必须从下拉列表中创建并选择值。所以"#ktId"上面提到的是下拉列表的ID。从下拉列表中选择一个选项后,我只需要更新表格,即上面提到的tbltkt。 " ticketType"是下拉列表中选项的字段或列。所以任何人都可以在这里提及或指出我的错误。我可以在ajax中使用SQL更新代码吗?

3 个答案:

答案 0 :(得分:1)

请不要这样做。在这里阅读SQL注入:SQL INJECTION

所有SQL代码必须仅存在于服务器端或作为存储过程。只需将变量发送到服务器并在服务器端进行查询。请阅读SQL注入以避免黑客攻击。

答案 1 :(得分:1)

这不太安全。也许你应该重新考虑你的架构?但是,您的语法错误是因为SQL之后的额外括号。但是,如果你在回调

中编写它,你的SQL程序仍然无效

答案 2 :(得分:0)

这里的要点是,实际应该访问数据库的是您的应用程序服务器(如果您在后端使用ASP,则为IIS),而后者又会监听您的AJAX请求。因此,访问数据库的代码可能位于服务器端,而不是与javascript函数混合,这可能导致SQL注入攻击,如上面的另一个答案所述。

所以你应该编写一些服务器处理程序来监听你的AJAX调用你输入这个处理程序将用于构造SQL查询的参数,针对数据库服务器启动它,并返回一个视图(或JSON数据) )结果。

很抱歉,如果您不提供有关应用程序架构和您正在使用的技术的更多详细信息,我就不会更具说明性。