2013-07-11 148 views
0

我在我的項目中有一個計時器,當我停止計時器值應該被保存到數據庫,但我無法從JavaScript到homecontroller獲取定時器的值。如何從JavaScript獲得價值到homecontroller?

我的JavaScript是:

<script type="text/javascript"> 

document.getElementById("starttime").innerHTML = ((hour<=9) ? "0"+hour : hour) + " : " + ((min<=9) ? "0" + min : min) + " : " + sec; 
. 
. 
. 
. 
. 
</script> 

<script type="text/javascript"> 
     $(document).ready(function() { 
      $("#End").click(function() { 
       $.ajax({ url: '/Home/SaveAnsDetails?classs=' + ($("#txtClass").val()) 
        + '&ExamDate=' + ($("#ExamDate").val()) 
        + '&ddd=' + ($("#starttime").val()),<!--timer value starttime is passed to ddd--> 
        type: "Post", 
        dataType: "json", 

        success: function (message) { 
         alert(message); 
        } 
       }); 
      }); 
     }); 

</script> 

<div id="starttime" style="font-size:large; "></div> 

HomeController的編碼是

[ActionName("SaveAnsDetails")] 
    public ContentResult SaveAnsDetails(ModelGridAllFeatures model, IList<VW_Grid_Answer1> ds, string ExamDate, string ddd) 
    { 

    } 

DDD從開始時間(定時器值)獲得。當我在homecontroller中獲得ddd值時,它包含一個空值。

任何想法?

+0

我不確定此參數是否爲「ModelGridAllFeatures模型」,但您是否相應地爲Examdate獲取了值? –

回答

0

您的ajax調用錯誤。查看jQuery.ajax()的文檔,特別是查找發送數據到服務器部分。

$.ajax({ 
    url: 
     '/Home/SaveAnsDetails?classs=' + ($("#txtClass").val()) 
     + '&ExamDate=' + ($("#ExamDate").val()) 
     + '&ddd=' + ($("#starttime").val()),<!--timer value starttime is passed to ddd--> 
    type: "Post", 
    dataType: "json", 

    success: function (message) { 
     alert(message); 
    } 
}); 

已指定,使POST請求,但你嘗試與URL一起傳遞數據,省略data設置。這是錯誤的。如果您使用這樣的發佈請求,則需要指定data設置。使用下面的代碼在你的Ajax調用:

$.ajax({ 
    url: 
     '/Home/SaveAnsDetails', 
    data: 
     'classs=' + ($("#txtClass").val()) 
     + '&ExamDate=' + ($("#ExamDate").val()) 
     + '&ddd=' + ($("#starttime").val()), 
    type: "POST", 
    dataType: "json", 

    success: function (message) { 
     alert(message); 
    } 
}); 

在你的控制器,你需要指定[HttpPost]屬性,要能區分一個GET請求POST請求。

您不會將模型傳遞給您的控制器。而是使用傳遞給它的數據在控制器中實例化模型類的對象。有了POST請求,您可以訪問保存數據的FormCollection。使用Model.TryUpdateModel方法與Collection.ToValueProvider()方法一起將值寫入模型。您的控制器將是這個樣子:

[HttpPost] 
public ActionResult SaveAnsDetails(FormCollection collection) 
{ 
    var model = new ModelGridAllFeatures(); 
    TryUpdateModel(model, new string[] 
    { 
     "classs", 
     "ExamDate", 
     "ddd" 
    }, collection.ToValueProvider()); 
} 

您還可以GET要求結合POST請求。您可以將另一個參數傳遞給您的控制器,並編輯您的ajax請求以相應地在請求url中使用該參數。

+0

仍然我無法獲得計時器(DDD)的價值...我想在

我顯示計時器值的一些問題..+'&ddd ='+($(「#starttime」).val())沒有獲得價值..任何想法... –

0

請嘗試以下代碼:

$(document).ready(function() { 
     $("#End").click(function() { 
      $.ajax({ url: '/Home/SaveAnsDetails', 
       data: {'classs': $("#txtClass").val(), 
        'ExamDate': $("#ExamDate").val(), 
        'ddd':$("#starttime").text() 
        }, 
       type: "Post", 
       dataType: "json", 
       contentType:'application/json', 
       success: function (message) { 
        alert(message); 
       } 
      }); 
     }); 
    }); 

變化:

  1. 如果你需要,那麼爲什麼在URL參數發送數據,而不是身體發送的POST請求。
  2. 如果您需要'Json',那麼您還需要相應地指定'contentType'。
  3. 'starttime'是div元素,並得到它的值正確的方法是使用text()jquery方法。