2009-11-26 40 views
0

我從文本框中讀取一些值,並通過jQuerys post方法將它們發送到服務器。如果用戶輸入包含「bla bla」之類的文字,則呼叫失敗。數據看起來像這樣在這種情況下:在數據中包含腳本標籤的jQuery ajax調用

var data = { myKey: 'bla <script> bla' }; 

而且我把它發送到服務器這樣的:

$.post(targetUrl, data, function(x) {...}); 

在服務器端(一個Asp.Net Web表單),它看起來像調用永遠不會到達服務器。任何提示如何解決?如果有一個方便的功能可以清除不良標籤中的數據,那也可以。

回答

1

你是否已經關閉了你的aspx頁面的驗證請求?

添加這個在您的網頁聲明:

jQuery.fn.stripTags = function() { 
     return this.replaceWith(this.html().replace(/<\/?[^>]+>/gi, '')); 
}; 

你收到一個ASP.NET的Page_Load:validateRequest="false"

0

要使用jQuery函數剝去標籤?如果是,Request.Params中沒有任何內容?

0

我會建議逃避使用JavaScript轉義函數你的價值觀客戶端如下圖所示

var data = { myKey: escape('bla <script> bla') }; 

一旦你這樣做,你可以檢索使用以下(.NET代碼服務器端的正確值)

HttpUtility.UrlDecode(param_value_to_decode) 

我測試這一點,正確的值被正確地傳遞給通過post請求的服務器。

希望這會有所幫助。

附加信息:我忘了提及錯誤的原因。當使用螢火蟲檢查請求時,它會返回「500內部服務器錯誤 - 從...檢測到潛在危險的Request.Form值」。這是來自asp.net的內置保護機制,以防止腳本注入。下面的頁面指令ValidateRequest =「false」沒有像預期的那樣解決問題(在傳統的WebForms中工作)。這可能是特定於Mvc平臺的東西,不確定。上述解決方案確實可行,所以請使用它。

問候

+0

使用ValidateRequest MVC中,你需要的指令添加到您的控制器或動作 – Gregoire 2009-11-26 19:16:52

相關問題