2013-03-01 87 views
0

我想知道爲什麼調用一個jquery.Ajax和通過參數發送一個像這樣的字符串:"Z<Z" = "String<String"崩潰!我已嘗試與|@##~¬//("·$等其他人嘗試,但沒有問題...錯誤發送特殊字符在jquery.Ajax

我已經解決了使用encodeUriComponent,但我想知道爲什麼會崩潰,如果有另一種方法來解決它。

function getData() { 
    var code = "Z<Z" 
    return { Id : code }; 
} 

function goAjax(){ 
    dataSelected = getData(); 
    $.ajax({ 
      url: "/Controller/Action", 
      type: "POST", 
      data: dataSelected, 
      success: function (data, status, xhr) { 
       alert("Ok") 
      }, 
      error: function (xhr, status, err) { 
       alert('error'); 
      } 
     }); 
    } 

回答

2

這是因爲您在默認情況下不允許您發送此類字符的服務器上使用ASP.NET。你可以禁用它。例如,如果你正在使用ASP.NET MVC,你可以裝點您發佈與[ValidateRequest(false)]屬性控制器動作:

[ValidateRequest(false)] 
public ActionResult Action(MyViewModel model) 
{ 
    ... 
} 

另外,如果你不想禁用請求驗證的整個動作,你可以僅與[AllowHtml]屬性裝點您的視圖模型屬性:

public class MyViewModel 
{ 
    [AllowHtml] 
    public string Id { get; set; } 
} 

然後:

public ActionResult Action(MyViewModel model) 
{ 
    ... 
} 

現在你只能爲Id屬性發送這些字符。

+0

完美!這是一個很好的答案! :D Ty Darin! :) – user1520494 2013-03-01 08:40:12