2017-05-27 184 views
1

我想從視圖傳遞一個對象到控制器使用Ajax。但我在控制器中的對象內獲得空值。我的代碼如下..你能幫我解決這個問題Ajax調用返回空值的對象

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script> 
function Save() { 
    // var Trip={output}; 
    debugger; 
    var stop; 
    var table = $('#scheduletable').DataTable(); 
    var rows = $('#scheduletable tr'); 
    var StopNames = ''; 
    var TripNumbers = ''; 
    var TripDetails = ''; 
    StopNames += table.column(0).data().toArray().join("&"); 
    for (var i = 1; i < rows[0].cells.length; i++) { 
     TripNumbers += rows[0].cells[i].innerText + '&'; 
     TripDetails += table.column(i).data().toArray().join("&"); 
    } 
    debugger; 
    TripNumbers = TripNumbers.replace(/(\r\n|\n|\r)/gm, ""); 
    var output = { 
     'StopNames': StopNames, 
     'TripNumbers': TripNumbers, 
     'TripDetails': TripDetails 
    }; 
    $.ajax({ 
     type: "POST", 
     url: "/ScheduleManagement/ScheduleManagement/SaveSchedules", 
     // contentType: 'application/json;', 
     dataType: "json", 
     data: JSON.stringify(output), 
     success: function (values) { 
     }, 
     error: function (err) { 
      console.log(err); 
     } 
    }); 
} 

我使用控制器下面的代碼

[HttpPost] 
public JsonResult SaveSchedules(TripsToSave output) 
{ 
    // dynamic item = output; 
    int serviceId = Convert.ToInt32(Session["ServiceGroupId"]); 
    // int status= _scheduleManagementBL.SaveMasterSchedule(output); 
    return Json("1", JsonRequestBehavior.AllowGet); 
    // return RedirectToAction("DisplayHttpError", "Error"); 
} 

實體。我正在使用此代碼

public class TripsToSave 
{ 
    public string StopNames { get; set; } 
    public string TripNumbers { get; set; } 
    public string TripDetails { get; set; } 
} 
+0

你通過你直接StopNames,TripNumbers得到PARAMS Ajax請求數據的方式, TripDetails不通過輸出。 –

+0

只是'數據:輸出,'(或者如果你真的把它串起來,那麼你需要'contentType:'application/json;'') –

回答

1

那麼你可以試試這個

var output = { 
     StopNames: 'StopNames', // change the value with string 
     TripNumbers: 'TripNumbers', // change the value with string 
     TripDetails: 'TripDetails' // change the value with string 
    }; 

$.ajax({ 
    type: "POST", 
    url: "/ScheduleManagement/ScheduleManagement/SaveSchedules", 
    contentType: 'application/json; charset=utf-8', 
    dataType: "json", 
    data: JSON.stringify(output), 
    success: function (values) { 
    }, 
    error: function (err) { 
     console.log(err); 
    } 
}); 

數據類型: 'JSON',

其平均收益率從服務器的數據的類型應該是JSON

的contentType: 「應用程序/ JSON;字符集= UTF-8' ,

它的平均數據類型前應JSON將其發送給服務器,你的情況,你需要將數據轉換成JSON stringfy ..

注:

棄用聲明:從jQuery 3.0開始,將刪除jqXHR.success(),jqXHR.error()和jqXHR.complete()回調。您可以使用jqXHR.done(),jqXHR.fail(),和jqXHR.always(),而不是更多產品詳情請登陸 - 參觀

+0

感謝您的幫助..當我根據您的建議更改我的代碼時它工作正常。 – vIDHU

+0

你可以接受它回答:)很高興幫助你。 –

0

您不需要將輸出數據串聯起來,傳遞就是這樣。

 var StopNames = 'ss'; 
     var TripNumbers = 'ss'; 
     var TripDetails = 'cc'; 

      var output = { 
      'StopNames': StopNames, 
      'TripNumbers': TripNumbers, 
      'TripDetails': TripDetails 
     }; 

     $.ajax({ 
      type: "POST", 
      url: "/abc/SaveSchedules", 

      dataType: "json", 
      data: output, 
      success: function (values) { 
      }, 
      error: function (err) { 
       console.log(err); 
      } 
     });