【发布时间】:2018-05-11 14:23:22
【问题描述】:
我正在尝试将我的 ViewModel 之一传递给我的 Ajax 函数,但不幸的是,当我在浏览器中转到控制台时,我可以看到它只是检索这样的空字符串 > {CustomerNo: ""} 而不是检索正确像这样的数据> {CustomerNo:“1234”}。谁能指出我正确的方向!
谢谢。
我的 Ajax 函数:
<input type="text" id="CustomerNo" />
<script>
$(document).ready(function () {
let OrdreNo = window.localStorage.getItem("pgm");
$.ajax({
type: "GET",
url: "http://xxx/Account/OpenOrdersDetails/" + OrdreNo ,
dataType: "json",
success: function (result) {
alert(result.CustomerNo);
} //End of AJAX Success function
});
});
</script>
这就是我在 JsonResult 中的内容:
[Route("Account/OpenOrdersDetails/{OrdreNo?}")]
public JsonResult OpenOrdersDetails(string OrdreNo)
{
var bla4 = (from sh in data_2.Sales_Header
join h in data_2.Sales_Line on sh.No_ equals h.Document_No_
join s in data_2.Salesperson_Purchasers on sh.Salesperson_Code equals s.Code
where sh.No_ == OrdreNo
&& sh.Document_Type == 1
select new xxx.Ordre_Open_Details_VM.OrdreSingelLine
{
OrdrerNo = sh.No_,
CustomerNo = sh.Sell_to_Customer_No_,
Ordredate = sh.Order_Date,}
});
oodvm.OrdreDetailsSingleLines = bla4.FirstOrDefault();
return Json(oodvm,JsonRequestBehavior.AllowGet);
}
这是我的 ViewModel:
public class Ordre_Open_Details_VM
{
public OrdreSingelLine OrdreDetailsSingleLines { get; set; }
public class OrdreSingelLine
{
public OrdreSingelLine()
{
}
public OrdreSingelLine(string OrdrerNo, string CustomerNo, DateTime Ordredate)
{
this.OrdrerNo = OrdrerNo;
this.CustomerNo = CustomerNo;
this.Ordredate = Ordredate;
}
public string OrdrerNo { get; set; }
public string CustomerNo { get; set; }
public DateTime? Ordredate { get; set; }
}
Json 输出:
{"OrdreDetailsSingleLines":{"OrdreNo":"111111","CustomerNo":"22222","Ordredate":"/Date(1525816800000)/"}}
【问题讨论】:
-
实际上,您在控制台中登录的是您对 OrdreSingleLine 的值,它来自您的 javascript。这不是来自服务器的响应,它是来自您页面上 CustomerNo 字段的值,大概是空白的。我们不知道为什么那是空白的。我们不知道如何/为什么/是否应该填充它。无论哪种方式,这与您的 ajax 调用无关。如果您想查看来自服务器的响应,请改为使用
console.log(JSON.stringify(result));。 -
顺便说一句
failure: function (response) { alert(response.responseText); },是多余的。 jQuery 的 $.ajax 方法无法识别“失败”这样的选项。您可以在此处查看所有可用选项:api.jquery.com/jquery.ajax -
而
data: JSON.stringify(OrdreSingelLine)也是多余的。根据您的 Route 属性,您的 C# 方法已接受来自 URL 的OrdreNo参数。无需发送任何其他数据。 -
@ADyson 当我使用 console.log(JSON.stringify(result)); ,它将正确检索所有数据,但我只希望 OrdreSingelLine ViewModel 中的 CustomerNo 显示在页面上,那么我如何告诉我的成功函数从 OrdreSingelLine ViewModel 中检索 CustomerNo ?!
-
您应该在成功函数中检索
result。success: function (result) { alert(result); ...
标签: c# asp.net ajax asp.net-mvc