gpt4 book ai didi

javascript - Ajax 将空值传递给 Controller

转载 作者:行者123 更新时间:2023-12-03 09:03:02 24 4
gpt4 key购买 nike

我有一个下拉列表,其中包含 ID 列表。客户将选择一个,它将在页面上反射(reflect)总价。我正在创建一个 ajax 调用,当从下拉列表中提取不同的 ID 时,该调用将更新总数。

$("#BrandId").on('focus', function () {
// Store the current value on focus and on change
previous = this.value;
}).change(function () {
alert("Previous: " +previous);
sel = this.value;
alert("Selected: " +sel);
$.ajax({
cache: false,
type: "get",
contentType: "application/json; charset=utf-8",
url: '@Url.Action("GetBrandCost", "Shocks")',
data: JSON.stringify({ idp: previous, id: sel }),
dataType: "json",
aysnc: false,
success: function (data1) {
alert(data1);
//ShockTotal = $("#ShockTotal").html();
//ShockTotal = ShockTotal / 1;
////ShockTotal = ShockTotal - data1;
//$("#ShockTotal").html(data1);

}
});
});

警报工作正常,但 ajax 没有将这些 ID 传递到 Controller 中, Controller 只是接收空值。

 public decimal GetBrandCost(string idp, string id)
{
decimal costp = 0;
decimal cost = 0;
if (id == "" || id == null || idp == "" || idp == null)
{
return 0;
}
ShockBrand brandp = db.ShockBrands.Find(idp);
costp = brandp.Cost;
ShockBrand brand = db.ShockBrands.Find(id);
cost = brand.Cost;
cost = cost - costp;
return cost;
}

由于它们为空,我正在执行 if 语句,并在成功中返回零。我读到的大部分内容都是添加内容类型,但这似乎对我的情况没有帮助,我确信这没什么帮助。

最佳答案

从浏览器控制台,这个

$.ajax({
cache: false,
type: "get",
contentType: "application/json; charset=utf-8",
url: 'http://google.com',
data: JSON.stringify({ idp: 1, id: 2 }),
dataType: "json",
aysnc: false,
success: function (data1) {
console.log(data1)

}
});

将请求返回到 http://google.com/?{%22idp%22:1,%22id%22:2}&_=1440696352799,这是不正确的

并且没有字符串化

$.ajax({
cache: false,
type: "get",
contentType: "application/json; charset=utf-8",
url: 'http://google.com',
data: { idp: 1, id: 2 },
dataType: "json",
aysnc: false,
success: function (data1) {
console.log(data1)

}
});

返回 http://google.com/?idp=1&id=2&_=1440696381239(请参阅“网络”选项卡)

所以不要使用 JSON.stringify

为什么它会起作用 - 你的 asp.net Controller 操作接收简单的类型参数(字符串、数字等),并且 jquery 相当智能地确定要发送的内容,如果它是对象内部的对象,它将作为对象发送POST 的 POST 数据,以及 GET 对象的字符串表示(您有 GET 请求,但出于知识目的,只需坚持使用 2 种可以发送的数据类型,paramsdata) 因此,当 jquery 配置 url 时,asp.net 会理解约定,并将请求与相应的操作相匹配

但是不相信我,你自己检查一下

Chrome 开发控制台是你的 friend

关于javascript - Ajax 将空值传递给 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32255671/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com