Url编码javascript对象文字

Jay*_*yAr 13 javascript ajax url jquery asp.net-mvc-3

我有模特儿

public class SomeModel
{
    public string SomeText { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

在javascript中我创建了一个模型的javascript对象文字:

var model = {
                SomeText: "test"
            };
var serializedData = JSON.stringify(model);
Run Code Online (Sandbox Code Playgroud)

这会产生一个如下所示的字符串:

"{"SomeText":"test"}"
Run Code Online (Sandbox Code Playgroud)

现在假设我想将此模型发送到控制器,该控制器使用以下函数接受这样的模型:

public void Index(SomeModel model)
{
}
Run Code Online (Sandbox Code Playgroud)

我需要的是一个url字符串,其中模型具有以下形式:

"?SomeText=test"
Run Code Online (Sandbox Code Playgroud)

我知道当你通过ajax post发送模型时,ajax就是这样做的:

$.ajax({type:"POST", 
        url: "someUrl", 
        data: serializedData,
        ...
});
Run Code Online (Sandbox Code Playgroud)

'data:'url-编码序列化数据.

但我实际上不想使用ajax,所以我需要自己构建这个url.我想做与ajax对'data:'完全相同的事情.我如何自己对序列化数据进行url编码?

zzz*_*Bov 34

你应该使用jQuery.param:

$.param({foo:'bar', fizz:'buzz'});
//produces foo=bar&fizz=buzz
Run Code Online (Sandbox Code Playgroud)

数组也可以:

$.param({foo:['bar', 'baz']});
//produces foo%5B%5D=bar&foo%5B%5D=baz
//which is the url encoded form of: foo[]=bar&foo[]=baz
Run Code Online (Sandbox Code Playgroud)

如果您需要传统的数组语法,请使用第二个参数:

$.param({foo:['bar','baz']}, true);
//produces foo=bar&foo=baz
Run Code Online (Sandbox Code Playgroud)