2013-05-16 154 views
0

当前的脚本:将json数据传递给URL?

var IrregularChartParams = InitializeChartParams(); 

// parametreleri json stringe cevir... 
var chartParams = JSON.stringify(IrregularChartParams); 

$.ajax({ 
    url: '/Widget/GridExportToExcel', 
    type: 'POST', 
    contentType: 'application/json; charset=utf-8', 
    data: chartParams, 
    .... 

控制器

public void GridExportToExcel(IrregularChartParams chartParams) 
{ 

我想有些事情就像下面:

// I know this does not work... 
var url = '/Widget/GridExportToExcel' + chartParams 
window.open(url); 

什么是最简单的方式来增加JSON数据与模型结合网址是什么?

+0

http://stackoverflow.com/questions/5818065/how-to-pass-request-querystring-to-url-action –

+0

@Ravi,很抱歉我更新了我的问题。我使用剃刀分开的js文件。所以我不能使用“Ur.Action” –

+0

在我看来,你真的想在查询字符串中传递一些参数。如果你在你的action方法中匹配查询字符串参数名和参数名,你会得到你想要的。 – Jammer

回答

1

可能是我无法解释,但我找到了一个解决方案,我不知道,这是最好的,但它的工作原理

var IrregularChartParams = InitializeChartParams(); 
var url = '/Widget/GridExportToExcel?' + $.param(IrregularChartParams, true); 
window.open(url); 
1

1: 如果InitializeChartParams()函数,返回一个名称 - 值对,你不需要任何东西,但改变请求方法GET

var IrregularChartParams = InitializeChartParams(); 

// parametreleri json stringe cevir... 
// var chartParams = JSON.stringify(IrregularChartParams); 
var chartParams = IrregularChartParams; 

$.ajax({ 
    url: '/Widget/GridExportToExcel', 
    type: 'GET', 
    contentType: 'application/json; charset=utf-8', 
    data: chartParams, 
    .... 

2: 如果InitializeChartParams()不会返回名称值集合,您可以将其内容附加到作为查询字符串的网址$.param,正如您在答案中所述。

3: ,如果你愿意,你可以通过IrregularChartParams作为一个单一的查询字符串项目到服务器,并在服务器反序列化:

var IrregularChartParams = InitializeChartParams(); 

var chartParams = JSON.stringify(IrregularChartParams); 

$.ajax({ 
    url: '/Widget/GridExportToExcel', 
    type: 'GET', 
    contentType: 'application/json; charset=utf-8', 
    data: {sp: chartParams}, 

and action method: 

public void GridExportToExcel(string cp) { 
    var chartParams = JsonConvert.DeserializeObject<IrregularChartParams>(json); 
    ... 
} 
+1

感谢您的回答,但传递json对象没有问题。我的第一个代码是这样做的。 $ .ajax函数正在工作,但导出不起作用。因为你不能用ajax请求导出excel文件... –

+0

@AliRızaAdıyahşiyep我明白你的观点。你是对的。你做的方式足以工作。 +1给你的答案。干杯 –