我从控制器JsonDetailsProduct
返回了产品的JSON数据。这又是使用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中是否存在任何问题?
修改
另外,我更正了我的Jquery调用的data
参数,但是在弹出的空白弹出窗口后出现了第一个警告框。
答案 0 :(得分: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.
答案 1 :(得分: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
返回了正确的值。试试吧。