2013-10-18 50 views
0

如何檢索從客戶端發送的'數據'? (在現場 '數據')如何從服務器端的jQuery Ajax檢索「數據」?

<script type="text/javascript"> 
    $(function() { 
     $('#btnAddProductAjax').click(function() { 
      var name = $('#txtProductName').val(); 
      var units = $('#txtUnitsInStock').val(); 
      var price = $('#txtPrice').val(); 

      $.ajax({ 
       url: '@Url.Action("AddProductAjax", "Home")', 
       type: 'POST', 
       dataType: 'JSON', 
       data: { 
        productname: name, 
        unitsinstock: units, 
        price: price 
       }, 
       success: function (data) {       
        $('#divResult').html(data); 
        alert('Product added successfully'); 
       } 
      }); 
     }); 
    }); 
</script> 

我如何使用這些數據

data: { 
    productname: name, 
    unitsinstock: units, 
    price: price 
}, 

在我的服務器端操作 'AddProductAjax'?

public JsonResult AddProductAjax(string data) 
{ 
    //retrieve data which is sent from client and do something 
    return Json(json_data); 
} 

我想:

  • 從的Request.QueryString []
  • AddProductAjax(字符串名稱,詮釋單位,INT價格)
  • AddProductAjax(產品PROD)
獲取數據

谷歌搜索了幾個小時,沒有結果

UPD: 如果我這樣定義

AddProductAjax(string productname, int unitsinstock, decimal price) 

行動 - 沒有任何反應。 Ajax甚至不會調用這個動作。 如果我嘗試

AddProductAjax(string productname, string unitsinstock, string price) 

- 在調試器中所有的字段都是空的!

回答

0

它有助於指定MVC什麼類型的請求行動應該期望使用屬性。在System.Web.Mvc中可以找到HttpPostHttpGet屬性。

像這樣:

[HttpPost] 
public JsonResult AddProductAjax(string productname, int unitsinstock, 
           decimal price) 
{ 
    //logic... 

    return Json(json_data); 
} 

如果起初不工作,有機會的話,你需要爲string s到定義參數(括號中的變量),然後分析每一個檢索裏面的值,如下所示:

[HttpPost] 
public JsonResult AddProductAjax(string productname, string unitsinstock, 
           string price) 
{ 
    int units = 0; 
    int.TryParse(unitsinstock, out units); 

    decimal decPrice = 0.00; 
    decimal.TryParse(price, out decPrice); 

    //logic... 

    return Json(json_data); 
} 
+0

如果我定義動作像AddProductAjax(字符串productname,int unitsinstock,小數價格) - 沒有任何反應。 Ajax甚至不會調用這個動作。如果我嘗試AddProductAjax(字符串產品名稱,字符串單位,字符串價格) - 在調試器中,所有字段都是空的! – Andrew

+0

重要的是,Action定義中的參數名稱與從AJAX調用發送的'data'對象中的值的名稱匹配。您可以嘗試在動作定義上添加'[HttpPost]'。我會更新我的答案來證明這一點。 – Kehlan

+0

[HttpPost]不起作用:( – Andrew

相關問題