2016-03-02 61 views
0

我在MVC應用程序工作,並調用JsonResult AJAXly頁甚至沒有發現當JsonResult方法存在

我的請求時,我得到404錯誤:

http://localhost:60890/ED/Document/GetGroupDocumentMergedPath?groupDocuments=%5B%7B%22GroupDocumentId%22%3A1314%2C%22TemplateId%22%3A212%2C%22GroupDocumentType%22%3A0%7D%2C%7B%22GroupDocumentId%22%3A149%2C%22TemplateId%22%3A208%2C%22GroupDocumentType%22%3A0%7D%2C%7B%22GroupDocumentId%22%3A570%2C%22TemplateId%22%3A210%2C%22GroupDocumentType%22%3A0%7D%2C%7B%22GroupDocumentId%22%3A198%2C%22TemplateId%22%3A209%2C%22GroupDocumentType%22%3A0%7D%2C%7B%22GroupDocumentId%22%3A90%2C%22TemplateId%22%3A201%2C%22GroupDocumentType%22%3A0%7D%2C%7B%22GroupDocumentId%22%3A119%2C%22TemplateId%22%3A206%2C%22GroupDocumentType%22%3A0%7D%2C%7B%22GroupDocumentId%22%3A2431%2C%22TemplateId%22%3A217%2C%22GroupDocumentType%22%3A0%7D%2C%7B%22GroupDocumentId%22%3A1004%2C%22TemplateId%22%3A211%2C%22GroupDocumentType%22%3A0%7D%2C%7B%22GroupDocumentId%22%3A1686%2C%22TemplateId%22%3A213%2C%22GroupDocumentType%22%3A0%7D%2C%7B%22GroupDocumentId%22%3A2076%2C%22TemplateId%22%3A215%2C%22GroupDocumentType%22%3A0%7D%2C%7B%22GroupDocumentId%22%3A2469%2C%22TemplateId%22%3A302%2C%22GroupDocumentType%22%3A0%7D%2C%7B%22GroupDocumentId%22%3A5140%2C%22TemplateId%22%3A220%2C%22GroupDocumentType%22%3A0%7D%2C%7B%22GroupDocumentId%22%3A5020%2C%22TemplateId%22%3A221%2C%22GroupDocumentType%22%3A0%7D%2C%7B%22GroupDocumentId%22%3A5105%2C%22TemplateId%22%3A222%2C%22GroupDocumentType%22%3A0%7D%2C%7B%22GroupDocumentId%22%3A5066%2C%22TemplateId%22%3A223%2C%22GroupDocumentType%22%3A0%7D%2C%7B%22GroupDocumentId%22%3A4039%2C%22TemplateId%22%3A225%2C%22GroupDocumentType%22%3A0%7D%2C%7B%22GroupDocumentId%22%3A4159%2C%22TemplateId%22%3A235%2C%22GroupDocumentType%22%3A0%7D%2C%7B%22GroupDocumentId%22%3A4283%2C%22TemplateId%22%3A245%2C%22GroupDocumentType%22%3A0%7D%2C%7B%22GroupDocumentId%22%3A4343%2C%22TemplateId%22%3A249%2C%22GroupDocumentType%22%3A0%7D%2C%7B%22GroupDocumentId%22%3A4399%2C%22TemplateId%22%3A250%2C%22GroupDocumentType%22%3A0%7D%2C%7B%22GroupDocumentId%22%3A4463%2C%22TemplateId%22%3A252%2C%22GroupDocumentType%22%3A0%7D%2C%7B%22GroupDocumentId%22%3A4856%2C%22TemplateId%22%3A256%2C%22GroupDocumentType%22%3A0%7D%2C%7B%22GroupDocumentId%22%3A4906%2C%22TemplateId%22%3A257%2C%22GroupDocumentType%22%3A0%7D%2C%7B%22GroupDocumentId%22%3A4956%2C%22TemplateId%22%3A258%2C%22GroupDocumentType%22%3A0%7D%2C%7B%22GroupDocumentId%22%3A2499%2C%22TemplateId%22%3A215%2C%22GroupDocumentType%22%3A0%7D%5D&actionType=715&_=1456902108180 

控制器:

[HttpGet] 
public JsonResult GetGroupDocumentMergedPath(string groupDocuments, int actionType){} 

AJAX調用:

$.ajax({ 
    url: '/ED/Document/GetGroupDocumentMergedPath', 
    type: "GET", 
    data: { groupDocuments: JSON.stringify(groupDocuments), actionType: 715 }, 
    beforeSend: function() { 
    }, 
    success: function (data) { 
     //Business logic 
    }, 
    complete: function() { 
     checkedIds = {}; 
     ToggleDisabled("print", false); 
    } 
}); 

場景:

在AJAX調用我送的名單,平均20個對象具有三個屬性。

我查詢字符串的長度比允許導致錯誤的長度還是我要錯的地方?

+0

是,如果你只使用(比方說)'數據的工作:{groupDocuments: 'ABC',操作類型:715 }'? –

+0

@StephenMuecke @StephenMuecke如果負載較少,它正在工作,這裏我試圖下載一組文檔,當我爲單個文檔(其中只有一個對象在列表中)工作正常時 – RandomUser

+2

因爲它的GET,你可能超過查詢字符串限制。嘗試使它成爲一個POST而不是BUT爲什麼你張貼它作爲一個字符串 - 你應該發佈的對象和參數應該(說)'列表文件' –

回答

0

不要在單個字符串中傳遞多個細節。您必須創建One ViewModel並將其傳遞給Data中的model的serializeObject。因此通過AJAX將數據傳遞給Method是安全和良好的方式。

如果您想要從表單控件傳遞數據,然後序列化表單並將其傳遞給AJAX。

請看下面的例子。 Ajax調用

$.fn.serializeObject = function() { 
      var o = {}; 
      var a = this.serializeArray(); 
      $.each(a, function() { 
       if (o[this.name] !== undefined) { 
        if (!o[this.name].push) { 
         o[this.name] = [o[this.name]]; 
        } 
        o[this.name].push(this.value || ''); 
       } else { 
        o[this.name] = this.value || ''; 
       } 
      }); 
      return o; 
     }; 
    form = $('#groupDocuments').serializeObject(); // groupDocuments is form Id 
    var data = JSON.stringify({ model: form });  
    $.ajax({ 
     url: '/ED/Document/GetGroupDocumentMergedPath', 
     type: "GET", 
     data: data, 
     beforeSend: function() { 
     }, 
     success: function (data) { 
      //Business logic 
     }, 
     complete: function() { 
      checkedIds = {}; 
      ToggleDisabled("print", false); 
     } 
    }); 

JasonResult方法

[HttpPost] 
    public JsonResult GetGroupDocumentMergedPath(GroupDocumentViewModel model) 
    { 
    // Your Code here  
    } 

視圖模型

public class GroupDocumentViewModel 
{ 
//All your property which you passing from view to controller via AJAX 
}