Url编码javascript对象文字
我有一个模型Url编码javascript对象文字,javascript,jquery,ajax,asp.net-mvc-3,url,Javascript,Jquery,Ajax,Asp.net Mvc 3,Url,我有一个模型 public class SomeModel { public string SomeText { get; set; } } 在javascript中,我创建模型的javascript对象文字: var model = { SomeText: "test" }; var serializedData = JSON.stringify(model); 这将生成一个如下所示的字符串: "{"SomeText":"te
public class SomeModel
{
public string SomeText { get; set; }
}
在javascript中,我创建模型的javascript对象文字:
var model = {
SomeText: "test"
};
var serializedData = JSON.stringify(model);
这将生成一个如下所示的字符串:
"{"SomeText":"test"}"
现在,假设我想将此模型发送给一个控制器,该控制器通过以下函数接受这样的模型:
public void Index(SomeModel model)
{
}
我需要的是一个url字符串,其中模型具有以下形式:
"?SomeText=test"
我知道,当您通过ajax post发送模型时,ajax正是这样做的:
$.ajax({type:"POST",
url: "someUrl",
data: serializedData,
...
});
“data:”url对序列化数据进行编码
但我实际上不想使用ajax,所以我需要自己构建这个url。我想做与ajax处理“数据:”完全相同的事情。我自己如何对序列化数据进行url编码 为了转义单个值,Javascript具有函数
escape
。您必须提供自己的函数来迭代对象、添加键等等
编辑
Esailija非常友好地提醒我,escape
不能正确处理许多常见情况,encodeURIComponent
更好。如果您已经在使用jQuery(您应该这样做),ZZBOV的答案更好。您应该使用:
阵列也可以:
$.param({foo:['bar', 'baz']});
//produces foo%5B%5D=bar&foo%5B%5D=baz
//which is the url encoded form of: foo[]=bar&foo[]=baz
如果需要传统的数组语法,请使用第二个参数:
$.param({foo:['bar','baz']}, true);
//produces foo=bar&foo=baz
看看我到底需要什么,谢谢,但我需要进一步检查,因为模型包含一个列表实际上。。。
$.param({foo:['bar','baz']}, true);
//produces foo=bar&foo=baz