Как отправить сложную строку через AJAX

#asp.net-mvc #ajax

#asp.net-mvc #ajax

Вопрос:

Я должен отправить сложную строку через AJAX в ASP.NET С моей точки зрения, MVC относится к определенному действию контроллера.

Строка должна содержать всевозможные символы, такие как < , > , amp; , » , ‘ .

Я использую следующий код на javascript :

var запрос = new Sys.Net.WebRequest();
request.set_url("/Контроллер/Действие?Param="   str) ; // str - это строка, которая должна быть отправлена 
запрос.set_httpVerb("POST");
request.invoke();

Но когда я запускаю страницу, AJAX-запрос не достигает действия в контроллере.

Кто-нибудь может рассказать, как этого добиться?

Ответ №1:

используйте encodeURIComponent в str

 var request = new Sys.Net.WebRequest();
request.set_url("/Controller/Action?Param="   encodeURIComponent(str)) ; // str is the string to be sent
request.set_httpVerb("POST");
request.invoke();
  

Ответ №2:

Я думаю, вы ищете Server.UrlEncode . или просто encodeURI / encodeURIComponent в javascript.

Закодируйте необработанные данные перед добавлением их к URL.

Ответ №3:

создайте свой метод удаления в global.asax следующим образом

 routes.MapRoute("Delete", //Route name
                "ControllerName/MethodName/{id}",
                new { controller = "controller Name", action = "Method Name", id = 1 }
  

Ответ №4:

 request.set_url("/Controller/Action?Param='"   str "'" ) ;
  

Ответ №5:

Я бы порекомендовал вам jQuery. Microsoft AJAX похожа на stone age и полностью устарела в ASP.NET MVC. Я имею в виду, если вы работали над каким-то устаревшим ASP.NET Приложение WebForms у вас было бы оправдание, но в ASP.NET MVC нет оправдания. Итак:

 $.ajax({
    url: '<%= Url.Action("Action", "Controller")',
    type: 'POST',
    data: { Param: str },
    success: function(result) {
        // handle the success
    }
});
  

Также, если вам нужно отправить специальные символы, такие как < , > , … вы должны убедиться, что соответствующее действие контроллера оформлено [ValidateInput(false)] атрибутом:

 [ValidateInput(false)]
public ActionResult Action(string Param)
{
    ...
}
  

и если вы используете ASP.NET 4.0 возможно, вам также потребуется установить следующее в вашем web.config, чтобы это сработало:

 <httpRuntime requestValidationMode="2.0" />