我已經看過幾篇關於解決特殊字符傳輸不正確的方法。但是,我想要一個更好更簡單的解決方案(可能無法找到它)。編號特殊字符未被jquery ajax正確發送
我有一個函數,我也傳遞一個對象。在對象(myObject)中,可以有一些帶有特殊編號字符的文本(Bill ’ s,右引號特殊編號字符)。
當我嘗試發送數據時,它會窒息。於是,我瀏覽了我的代碼,並在任何地方逃脫,它接受了用戶的輸入,並且在顯示信息的地方沒有轉義。
問題:顯示或接受用戶輸入
- 可能丟失的地方。
- 數據與轉義字符一起存儲。
我已經看到了解決方案,特殊字符將被消毒,但它需要一個特殊字符的列表。或者我可以嘗試解碼後端的轉義字符。
- 後端 - MVC .NET C#
jQuery的版本:1.7.2
var json = $.toJSON(myObject); $.ajax({ type: 'POST', url: RootUrl + "Viewer/Save/", data: { "json": json }, async: false, contentType: "application/json; charset=utf-8", success: function (data) { var $("#display").(data); }, error: function (xhr, status, error) { alert(error); } });
的更多信息:
JSON字符串傳遞到MVC控制器。該方法看起來像這樣。
public ContentResult Save(string json)
{
try
{
dynamic data = new System.Web.Script.Serialization.JavaScriptSerializer().Deserialize<dynamic>(json);
}
catch (Excepteion ex)
{
// More code
}
}
錯誤消息時我在Chrome的調試器我得到的是:
- 500(內部服務器錯誤)
更多我想想,我想知道是否有是後端中的設置,需要更改爲接受特殊編號的字符。我之所以這麼說,是因爲如果我將一個斷點設置爲MVC控制器方法的開始,那麼它實際上從來沒有達到斷點。但是,如果逃跑或使用撇號符號,那很好。
我將繼續搜索並回復我的發現。
UPDATE
繼信息:Getting "A potentially dangerous Request.Path value was detected from the client (&)"
[ValidateInput(false)]
[HttpPost]
public ContentResult SaveTailoring(string json)
我將此添加到我的代碼,它解決了我的獲取數據到控制器的問題。我正在研究如此之多,並會對這種技術的優點和缺點有所瞭解。
代碼的哪個部分應該做一些符號,例如'’'(它不能包含空格 - 問題中的那個)?因此,外部序列化的HTML「’」只是七個Ascii字符。此外,如果您發佈的數據將其作爲UTF-8傳輸,如代碼所示,爲什麼您會考慮轉義角色? –
不,它不包含空格。是的,它序列化好,但是當我在MVC控制器中收到它時,我得到一個錯誤500,內部服務器錯誤。我昨天晚上在想這個問題,不知道這個問題是否在後端更多,不知道。 –
你用'ApiController'試過這個嗎?我不是MVC專家,但是在構建我的jQuery ajax方法時,我發現它們更容易處理,併爲頁面/部分保留正常的'Controller's。發佈UTF-8我不希望需要任何特殊的轉義,但我沒有嘗試過。 – Klors