将编码的字符串发送回服务器asp.net mvc

时间:2015-03-09 21:23:03

标签: javascript ajax asp.net-mvc

我构建了以下编码网址:

actionUrl = "MyAction?Vendors=A*A,A%26A,A%2CA"

我想通过ajax调用将其发送回我的服务器:

       $.ajax({
    url: actionUrl,        
    cache: false,
    dataType: "HTML",
    success: function (data) {
      alert('hooray');
    },
    error:function(data) {
            alert(data.responseText);
        }

});

但是当它在服务器上达到我的操作时,字符串就是:

        Vendors = "A*A,A&A,A,A"

我需要在解码字符串之前用逗号解析,但是它来到我的服务器解码了。如何通过ajax将编码的字符串发送到我的操作方法?我正在使用asp.net MVC4,但我认为这没有实际意义。感谢

1 个答案:

答案 0 :(得分:1)

以JSON的形式发送数据:

var values = ["A*A","A&A","A,A"];
actionUrl = "MyAction?Vendors=" + JSON.stringify(values);

然后在ASP.net中,您可以使用system.Web.Script.Serialization.JavaScriptSerializer将其序列化为对象。

using System.Web.Script.Serialization;

var json = "[\"A*A\",\"A,A\",\"A&A\"]"; //this is the received JSON from the ajax call
var jss = new JavaScriptSerializer();
var values = jss.Deserialize<dynamic>(json);
var value1 = values[0].ToString(); //A*A
var value2 = values[1].ToString(); //A,A
var value3 = values[2].ToString(); //A&A

这样,客户端和服务器之间不会发生进一步的(不需要的)转换。 JavaScript将其转换为JSON,ASP.net将其转换回其本机对象表示法。因此,消除了对字符进行编码的需要,这将由浏览器自动完成,服务器会将其解码回来,如您所见。