2016-02-18 97 views
0

我想發送日期到控制器使用ajax但得到空。爲什麼?發佈日期時間到控制器

enter image description here

@{ 
ViewBag.Title = "Index"; 
} 

<h2>Index</h2> 

<script src="~/Scripts/jquery-2.2.0.min.js"></script> 
<script src="~/Scripts/moment.min.js"></script> 
<script src="~/Scripts/bootstrap.min.js"></script> 
<script src="~/Scripts/bootstrap-datetimepicker.min.js"></script> 

<link href="~/Content/bootstrap.min.css" rel="stylesheet" /> 
<link href="~/Content/bootstrap-datetimepicker.min.css" rel="stylesheet" /> 

<div class="container"> 
<div class="row"> 
    <div class='col-sm-6'> 
     <div class="form-group"> 
      <div class='input-group date' id='datetimepicker1'> 
       <input type='text' class="form-control" /> 
       <span class="input-group-addon"> 
        <span class="glyphicon glyphicon-calendar"></span> 
       </span> 
      </div> 
     </div> 
    </div> 
    <script type="text/javascript"> 
     $('#datetimepicker1').datetimepicker({ useCurrent: false }); 
     $('#datetimepicker1').on("dp.hide", function (e) { 
      $.ajax({ 
       url: "/Home/GetData", 
       type: "POST", 
       data: JSON.stringify($('#datetimepicker1').data('DateTimePicker').date()), 
       contentType: "application/json", 
       success: function (result) { alert('Done') }, 
       error: function (r, e, s) { alert(e) } 
      }); 
     }); 
    </script> 
</div> 
</div> 

控制器:

public class HomeController : Controller 
{ 
    // 
    // GET: /Home/ 

    public ActionResult Index() 
    { 
     return View(); 
    } 
    [HttpPost] 
    public ActionResult GetData(string test) 
    { 
     return View(); 
    } 
} 
+0

如果它的日期,那麼參數應該是'DateTime test',但是ajax需要'data {test:$('#datetimepicker1')。val()},並刪除'contentType:「application/json」,' –

+0

在這些更改後,我在Chrome控制檯中得到了「POST http:// localhost:8798/Home/GetData 500(內部服務器錯誤)」。和控制器沒有得到任何東西。 – A191919

+0

您是否刪除了'contentType:「application/json」,'?您的發送日期的格式與您的服務器文化所期望的相同嗎? –

回答

1

你不傳遞一個名稱/值對回該參數名稱(test)相匹配的控制器的方法和不需要字符串化的數據。更改AJAX腳本

$.ajax({ 
    url: '@Url.Action("GetData", "Home")', // don't hard code your url's 
    type: "POST", 
    data: { test: $('#datetimepicker1').data('DateTimePicker').date() }, 
    // contentType: "application/json", delete this 
    success: function (result) { alert('Done') }, 
    error: function (r, e, s) { alert(e) } 
}); 

而且因爲你發佈一個DateTime值時,控制器方法應該是

[HttpPost] 
public ActionResult GetData(DateTime test) 
{ 
    return View(); 
} 

這假定日期值是在服務器的文化相一致的格式,或ISO格式('yyyy-MM-dd HH:mm'),例如,通過使用

data: { test: $('#datetimepicker1').data('DateTimePicker').date().format('YYYY-MM-DD HH:mm') }, 

請注意,你的方法返回一個視圖,但你不能做與HTML任何你返回(只顯示一個提醒)

相關問題