2015-11-17 156 views
0

我一直在研究一個我需要更新SQL表的ajax代碼。我不確定是否可以在AJAX中編寫SQL代碼,因爲我完全不熟悉AJAX。當我嘗試時,我遇到了問題,即當我在ajax代碼內部編寫SQL更新代碼時,它給我一個錯誤,提示「未捕獲的語法錯誤:丟失catch或最後嘗試後」。下面是我的工作代碼:我可以在ajax代碼中編寫SQL更新嗎?

$("#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更新代碼嗎?

+0

你以這種方式訪問​​什麼樣的數據庫?我覺得你在這裏有一些嚴重的miconceptions ... – Vi100

+0

我會說它的操作DB,SQL Server ..對於這個特定的部分,我只需要在ASP頁面上創建一個下拉框(僅由客戶服務使用代表)。當他們從下拉列表中選擇一個選項時,該特定表格需要更新。它的目的只是分類或分組他們從客戶那裏獲得的問題類型。 – Vuiee

回答

1

請不要這樣做。在此處閱讀有關SQL注入的信息:SQL INJECTION

所有SQL代碼都必須存在於服務器端或作爲存儲過程。只需將您的變量發送到服務器並在服務器端進行查詢即可。請閱讀有關SQL注入以避免黑客入侵。

+0

謝謝我一定會記住@Walter White – Vuiee

1

這不是很安全。也許你應該重新考慮你的架構?但是,您的語法錯誤是由於SQL之後的額外大括號。但是,如果你在回調中寫入SQL程序,你的SQL過程將不起作用

+0

太好了,謝謝@legotin – Vuiee

0

這裏的要點是,誰應該實際訪問數據庫是你的應用程序服務器(IIS,如果你在後端使用ASP),這反過來又聽你的AJAX請求。因此,訪問數據庫的代碼可能位於服務器端,並且不會與JavaScript函數混合,這可能導致SQL注入攻擊,如上面另一個答案中所述。

因此,您應該編寫一些服務器處理程序來偵聽您的AJAX調用,以便將該處理程序將用於構造SQL查詢的參數,對數據庫服務器啓動它並返回視圖(或JSON數據)與結果。

對不起,但如果您不提供有關應用程序體系結構和您正在使用的技術的更多細節,我不能更具體。

相關問題