0

我正在从控制器返回 Product 的 JSON 数据JsonDetailsProduct。这又使用 Jquery 调用。

但是,Jquery 调用的成功函数似乎没有接收到任何数据。我猜我的控制器有问题。

MVC 控制器:

    public ActionResult JsonDetailsProduct(int id)
{ 
    Product pdt = NWDC.GetProduct(id); 
    if (pdt == null)
 { 
    // i'm throwing a custom exception here
    throw new RecordNotFoundException(); 
 } 
else
 { 
    return Json(new { 
    ProductId = prod.ProductID, 
    ProductName = prod.ProductName, 
    UnitPrice = prod.UnitPrice, 
    UnitsInStock = prod.UnitsInStock, 
    Discontinued = prod.Discontinued 
    }, JsonRequestBehavior.AllowGet); 
  } 
} 

JQuery 调用:

<script type="text/javascript">
$(document).ready(
  function(){   
    alert("About to make the call"); // just added it for my debugging purpose
   $.getJSON( "/SlimProductServices/JsonDetailsProduct",  
               data:{id:$('#txtProductID').val()},
    function(productData)
    {
      alert(productData);
    }
    );
 }
);

任何想法设置错误以及 Jquery Call 中是否也存在任何问题?

编辑 另外,我更正了 data我的 Jquery 调用的参数,但是在空白弹出窗口之后出现了第一个警报框。

4

2 回答 2

1

你错过了id

$.getJSON( "/SlimProductServices/JsonDetailsProduct", { 'id': 1 },...

public ActionResult JsonDetailsProduct(int id)

查看jquery 文档中的getJson

你从哪里得到的身份证?如果您只想在不更改 jquery 调用的情况下测试调用,则可以添加第二个 Action 方法...

public ActionResult JsonDetailsProduct()
{ 
    Product pdt = NWDC.GetProduct(1); //hard code product Id that exists for testing.
于 2013-08-30T09:05:37.723 回答
1

不确定这是否解决了您的问题,我只是简单地运行了您的代码。

这是我尝试过的: -

public ActionResult JsonDetailsProduct(int id)
{
    Product pdt = GetProduct(id);
    if (pdt == null)
    {
        // i'm throwing a custom exception here
        throw new RecordNotFoundException();
    }
    else
    {
        return Json(new Product //Comment:-Added the Object Type
        {
            ProductId = pdt.ProductId,//Comment:-Sure if its 'prod' and not pdt ?
            ProductName = pdt.ProductName,
            UnitPrice = pdt.UnitPrice,
            UnitsInStock = pdt.UnitsInStock,
            Discontinued = pdt.Discontinued
        }, JsonRequestBehavior.AllowGet);
    }
}

我所做的两个更改都提到了它Comment:-,请看一下。

其次,我尝试过$.ajax,代码如下:-

<script type="text/javascript">
$(document).ready(function () {
    $.ajax({
        url: '/SlimProductServices/JsonDetailsProduct/'+$('#txtProductID').val(),
        type: 'GET',
        //data: $('#txtProductID').val(), //You can un-comment it later
        success: function (datos) {
            console.log(datos);
        },
    });
});
</script>

我从我的Action Method. 试试看。

于 2013-08-30T09:44:02.290 回答