четверг, 20 марта 2014 г.

Передача параметров JQuery WEB API

В WEB API три основных типа передаваемых параметров: обьект, одиночный параметр и массив.
Ниже представлен пример кода передачи параметров из jQuery.ajax .


Передача объекта

// adding material to user cart method
function addMaterialToCart(approvementId, salePackageId, orderId) {
 
    jQuery.ajax({
        url: '/api/CartService/Add/',
        type: "POST",
        data: { ApprovementId: approvementId, PackageId: salePackageId, OrderId: orderId},
        dataType: "json",
        success: function (data, textStatus, jqXHR) {
            alert("ок");
        },
        error: function (jqXHR, textStatus, errorThrown) {
                 alert("Ошибка: " );
        }
    });
}
 

// POST api/CartService/Add/
[System.Web.Http.HttpPost]
[System.Web.Http.ActionName("Add")]
public int Add(CartOrder cartOrder)
{
    return AddMaterialToCart(cartOrder);
}
public class CartOrder
 {   // a complex object 
     public string ApprovementId { getset; }
     public string PackageId { getset; }
     public string OrderId { getset; }
     public string ItemsCount { getset; }
 }

Передача 1 параметра

Самый простой способ передача как части  url
// Pushing or adding material to user cart method
function getMaterialCartCount(approvementId) {
 
    jQuery.ajax({
        url: '/api/CartService/GetCartRowsQuantity/' + approvementId,
        type: "POST",
        dataType: "json",
      
        success: function (data, textStatus, jqXHR) {
            alert("ок");
        },
        error: function (jqXHR, textStatus, errorThrown) {
                 alert("Ошибка: " );
        }
    }); }

// POST api/GetCartRowsQuantity
[System.Web.Http.HttpPost]
[System.Web.Http.ActionName("GetCartRowsQuantity")]
public int GetCartRowsQuantity([FromUri]string id)
{
    var guid = (id ?? string.Empty).ToGuidNullable();
    if (guid == null)
    {
        throw new Exception("Не задан ИД элемента");
    }
 
    return 5;
}

WebApiConfig.cs
config.Routes.MapHttpRoute(
    name: "DefaultApi",
    routeTemplate: "api/{controller}/{action}/{id}",
    defaults: new { id = RouteParameter.Optional }
);

Можно передать как обьект с 1 полем
jQuery.ajax({
               url: '/api/CartService/Delete/',
               type: 'POST',
               dataType: 'json',
               data: { Id: item.ID },
               success: function (data, textStatus, jqXHR) {
                      alert("ок");
               },
               error: function (jqXHR, textStatus, errorThrown) {
                      alert("Ошибка: " );
               }
           });

Передача массива


self.removeCartItemSList = function () {
 
    var idsArray = new Array();
 
    ko.utils.arrayForEach(self.CartItems(), function (data) {
        var f = data.Selected();
        if (f) {
            idsArray.push(data.ID);
        }
 
    });
 
 
    jQuery.ajax({
        url: '/api/CartService/DeleteList/',
        type: 'POST',
        dataType: 'json',
        traditional: true,
        contentType: 'application/json; charset=utf-8',
        data: JSON.stringify(idsArray),
 
        success: function (data, textStatus, jqXHR) {
            alert("ок");
        },
        error: function (jqXHR, textStatus, errorThrown) {
                 alert("Ошибка: " );
        }
    }); };


// POST api/CartService/Delete/
[System.Web.Http.HttpPost]
[System.Web.Http.ActionName("DeleteList")]
public void DeleteList(List<string> ids)
{
    var guidList = new List<Guid>();
 
}

Комментариев нет:

Отправить комментарий