如何通过AJAX发送复杂的字符串

时间:2011-04-13 20:34:45

标签: asp.net-mvc ajax

我必须通过ASP.NET MVC中的AJAX将复杂的字符串从我的视图发送到特定的控制器操作。

字符串需要包含各种字符,例如< ,> ,& ,“,”。

我在javascript中使用以下代码:


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

但是当我运行页面时,AJAX请求无法到达控制器中的操作。

有人能说出如何实现这个目标吗?

5 个答案:

答案 0 :(得分:1)

use encodeURIComponent on 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();

答案 1 :(得分:1)

我认为你正在寻找Server.UrlEncode。或者只是在javascript中使用encodeURI / encodeURIComponent

在将原始数据附加到URL之前对其进行编码。

答案 2 :(得分:1)

在global.asax中创建你的删除方法,就像这样

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

答案 3 :(得分:0)

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

答案 4 :(得分:0)

我会推荐你​​jQuery。 Microsoft AJAX就像石器时代一样,在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" />