2014-03-31 52 views
0

這是我的JavaScript函數:Url.Action:是否有一個解決方案的URL太長?

function myFunction() { 
    var grid = $('#GridName').data('tGrid'); 
    var data = JSON.stringify(grid.data); 

    var window = $('#Window').data('tWindow'); 
    window.content('<%= Resources.Global.Loading %>'); 
    window.contentUrl = '<%= Url.Action("MyMethod", "MyController") %>' + '?data=' + data; 
    ... 
} 

它得到的網格數據,把它變成一個字符串,並且將其作爲一個參數的MyMethod。

不幸的是,數據是一個很長的字符串,此功能不起作用。我試過發送子字符串,確實有一個字符數的截止點。

是否有解決這個限制的方法,或者採取不同的方式來做到這一點?

謝謝!我的評論的

+3

你能'數據POST'到服務器,得到響應,然後填充結果在任何'tWindow'是允許它加載URL本身,而不是? –

+0

(缺乏經驗)我會怎麼做呢?我的頁面和窗口有兩個不同的視圖模型 – Chris

+0

您可以使用AJAX發佈到該Url,然後在響應回調中:(1)捕獲視圖HTML,(2)嘗試使用'window.content替換窗口HTML (響應);'。網上有很多關於使用AJAX的教程(本地或通過像jQuery這樣的庫),所以我會把它作爲練習的一部分。爲什麼這會工作?允許'POST'向服務器提交更多的數據,而不是通過'GET'發送的數據(URL參數是'GET'請求的一部分,'POST'將數據編碼爲請求頭部分的一部分)。 –

回答

0

複製從上面:

你可以使用AJAX來POST到該URL,然後在響應回調,你可以:(1)捕捉查看HTML,和(2)嘗試更換窗口HTML使用window.content(response);

有很多在線使用AJAX的教程(本地或通過像jQuery這樣的庫),所以我會把它作爲練習用的。

爲什麼這會工作?通過POST的表單提交通常允許向服務器提交更多數據,而不是通過GET(URL參數是GET請求的一部分,而POST將數據作爲請求標頭的一部分進行編碼)發送到URL中。

0

這奏效了:

function myFunction() { 
    var grid = $('#Grid').data('tGrid'); 
    var data = JSON.stringify(grid.data); 

    var window = $('#Window').data('tWindow'); 
    window.content('<%= Resources.Global.Loading %>'); 

    $.ajax({ 
     type: 'Post', 
     cache: false, 
     url: '<%= Url.Action("MyMethod", "MyController") %>', 
     dataType: 'html', 
     data: { data: data }, 
     success: function (e) { 
      window.content(e); 
     } 
    }); 

    ... 
    } 
相關問題