无法在实时服务器 ASP.NET Core MVC 5 上显示来自 getJson 调用的数据
Cannot Display Data from getJson Call on Live Server ASP.NET Core MVC 5
我的网站上有一个特别有问题的控制器方法。它应该根据产品 ID、产品属性(即长度)和产品属性值(即 1.5 毫米)获取商品的价格。我正在使用 getJson 请求来实现这一点。该方法在我的本地服务器中运行良好,但在实时服务器上时,它访问该方法,但不提供价格。该方法看起来像这样。
[HttpGet]
[ActionName("GetPriceFromSetAttributes")]
public IActionResult GetPriceFromSetAttributes(int productId, string productAttributeName, string productAttributeValueName)
{
var price = _repository.GetProductPriceFromSetAttributes(productId, productAttributeName, productAttributeValueName);
return new JsonResult(price);
}
这是 getJson 请求。
var controllerUrl = '@Url.Action("GetPriceFromSetAttributes", "Cart")';
$.getJSON(controllerUrl, { productId: $("#productId").val(), productAttributeName: $(this).attr('id'), productAttributeValueName: $(this).val() }, function (data) {
if (data.attributePrice != null) {
$("#attributePrice").val("KES. " + data.attributePrice.toLocaleString() + "");
$("#attributePriceToPost").val("" + data.attributePrice + "");
$("#originalPriceAt").hide();
$("#attributePriceAt").show();
}
$('#addToCart').html('<i class="fas fa-cart-plus mr-2"></i> Add to Cart');
$('#addToCart').prop('disabled', false).removeClass('noHover');
});
在使用以下代码启用 CORS 后,该网站最初引发了跨源异常,
services.AddCors(options =>
{
options.AddPolicy("MyAllowSpecificOrigins",
builder =>
{
builder.WithOrigins("https://localhost:44383",
"https://tendcorp.co.ke")
.AllowAnyHeader()
.AllowAnyMethod()
.AllowCredentials();
});
});
app.UseCors("MyAllowSpecificOrigins");
没有异常,但问题依然存在。我什至尝试从我的开发环境连接到 SQL 数据库,但无济于事。
附上实时服务器和我的本地主机的屏幕截图。
谁有指点?我可能做错了什么?
getjson 不是您的最佳选择,因为它已转换为 ajax 后记,请直接尝试 jquery ajax
var controllerUrl = '@Url.Action("GetPriceFromSetAttributes", "Cart")'
+ '?productId='+ $("#productId").val()
+'&productAttributeName=' + $(this).attr('id')
+'&productAttributeValueName='+ $(this).val();
$.ajax({
type: 'GET',
dataType: 'json',
url: controllerUrl,
success: function (data) {
if (data.attributePrice != null) {
.... your code
}
}
});
我使用了 Serge 的 ajax 函数(上面标记为答案)并修改了我自己的控制器以提供字符串而不是 JSON 对象,因为实时服务器不断发回对我的 JSON 请求的文本回复。
控制器现在看起来像这样:
[HttpGet]
[ActionName("GetPriceFromSetAttributes")]
public IActionResult GetPriceFromSetAttributes(int productId, string productAttributeName, string productAttributeValueName)
{
var price = _repository.GetProductPriceFromSetAttributes(productId, productAttributeName, productAttributeValueName).AttributePrice.ToString();
return Content(price);
}
它获取所需数据的速度也比以前更快。
我的网站上有一个特别有问题的控制器方法。它应该根据产品 ID、产品属性(即长度)和产品属性值(即 1.5 毫米)获取商品的价格。我正在使用 getJson 请求来实现这一点。该方法在我的本地服务器中运行良好,但在实时服务器上时,它访问该方法,但不提供价格。该方法看起来像这样。
[HttpGet]
[ActionName("GetPriceFromSetAttributes")]
public IActionResult GetPriceFromSetAttributes(int productId, string productAttributeName, string productAttributeValueName)
{
var price = _repository.GetProductPriceFromSetAttributes(productId, productAttributeName, productAttributeValueName);
return new JsonResult(price);
}
这是 getJson 请求。
var controllerUrl = '@Url.Action("GetPriceFromSetAttributes", "Cart")';
$.getJSON(controllerUrl, { productId: $("#productId").val(), productAttributeName: $(this).attr('id'), productAttributeValueName: $(this).val() }, function (data) {
if (data.attributePrice != null) {
$("#attributePrice").val("KES. " + data.attributePrice.toLocaleString() + "");
$("#attributePriceToPost").val("" + data.attributePrice + "");
$("#originalPriceAt").hide();
$("#attributePriceAt").show();
}
$('#addToCart').html('<i class="fas fa-cart-plus mr-2"></i> Add to Cart');
$('#addToCart').prop('disabled', false).removeClass('noHover');
});
在使用以下代码启用 CORS 后,该网站最初引发了跨源异常,
services.AddCors(options =>
{
options.AddPolicy("MyAllowSpecificOrigins",
builder =>
{
builder.WithOrigins("https://localhost:44383",
"https://tendcorp.co.ke")
.AllowAnyHeader()
.AllowAnyMethod()
.AllowCredentials();
});
});
app.UseCors("MyAllowSpecificOrigins");
没有异常,但问题依然存在。我什至尝试从我的开发环境连接到 SQL 数据库,但无济于事。
附上实时服务器和我的本地主机的屏幕截图。
谁有指点?我可能做错了什么?
getjson 不是您的最佳选择,因为它已转换为 ajax 后记,请直接尝试 jquery ajax
var controllerUrl = '@Url.Action("GetPriceFromSetAttributes", "Cart")'
+ '?productId='+ $("#productId").val()
+'&productAttributeName=' + $(this).attr('id')
+'&productAttributeValueName='+ $(this).val();
$.ajax({
type: 'GET',
dataType: 'json',
url: controllerUrl,
success: function (data) {
if (data.attributePrice != null) {
.... your code
}
}
});
我使用了 Serge 的 ajax 函数(上面标记为答案)并修改了我自己的控制器以提供字符串而不是 JSON 对象,因为实时服务器不断发回对我的 JSON 请求的文本回复。
控制器现在看起来像这样:
[HttpGet]
[ActionName("GetPriceFromSetAttributes")]
public IActionResult GetPriceFromSetAttributes(int productId, string productAttributeName, string productAttributeValueName)
{
var price = _repository.GetProductPriceFromSetAttributes(productId, productAttributeName, productAttributeValueName).AttributePrice.ToString();
return Content(price);
}
它获取所需数据的速度也比以前更快。