我試圖根據 2 個引數獲取值,下面是我在 JSON stringify 中添加了 2 個引數的函式:
function GetItemLocationOnHand(itemId, locationId) {
var data = JSON.stringify({
itemId: itemId,
locationId: locationId
});
$.ajax({
async: true,
type: 'GET',
dataType: 'JSON',
contentType: 'application/json; charset=utf-8',
data: data,
url: 'getItemInventory3',
success: function (data) {
$("#txtInventory3").val(parseFloat(data).toFixed(2));
},
error: function () {
alert("Error")
}
});
}
下面是我的控制器中的代碼,用于根據這兩個引數檢索我想要的資料:
[HttpGet]
public JsonResult GetItemLocationOnHand(int itemId, int locationId)
{
var itemLocQuantity = objDB.ItemLocationDatas.Single(items => items.ItemId == itemId && items.LocationId == locationId).Quantity;
return Json(itemLocQuantity, JsonRequestBehavior.AllowGet);
}
通過下面的change代碼呼叫此函式時,我似乎無法獲取我的資料并且總是回傳錯誤..如果我只有 1 個引數,則沒有遇到錯誤。
請告知在嘗試傳遞 2 個引數時出了什么問題。
$("#LocationId").change(function () {
var itemId = $("#ItemId").val();
var locationId = $("#LocationId").val();
GetItemLocationOnHand(itemId, locationId)
});
uj5u.com熱心網友回復:
通過執行以下操作解決了問題:
添加了正確的 URL,即 GetItemLocationOnHand
洗掉字串化并使用 var data = ({ itemId: itemId, locationId: locationId });
非常感謝 Freedom 和 Reflective 以及其他人的評論!
function GetItemLocationOnHand(itemId, locationId) {
var data = ({ itemId: itemId, locationId: locationId });
$.ajax({
async: true,
type: 'GET',
dataType: 'JSON',
contentType: 'application/json; charset=utf-8',
data: data,
url: 'getItemLocationOnHand',
success: function (data) {
$("#txtInventory3").val(parseFloat(data).toFixed(2));
},
error: function () {
alert("Error")
}
});
}
uj5u.com熱心網友回復:
只是為了避免一些誤解 AJAX GET 的作業原理并設定一些您不必設定的引數(即您對 jQuery AJAX 的了解還不夠深入),您可以使用它們也實作的快捷方式,即$.get這樣您的請求看起來就像這不會出錯,因為它將使用正確的 GET 默認值。如果您希望將回應視為 JSON,只需將Content-type您的回應標頭(從支持的)設定為application/json. 這將由 jQuery AJAX 回應處理程式檢查,并將傳入資料決議為 JSON。
var data = {itemId: 1, locationId: 2 };
$.get('GetItemLocationOnHand', data, function (data) {
$("#txtInventory3").val(parseFloat(data).toFixed(2));
}).fail(function (jqXHR, textStatus ) {
alert(`Error = ${jqXHR.status} ${textStatus}`);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
uj5u.com熱心網友回復:
請參閱下面的示例。在對具有多個引數的 MVC 控制器執行 ajax 請求時,這對我有用。
下面是我的帶有多個引數的 MVC 控制器操作。
// GET [HttpGet] public ActionResult Index(string referenceID, int typeID, int supplierID, bool isArchived) { // Do CODE here }下面是我用來獲取或發布的 Ajax 請求。取決于您的需求。我使用資料型別“JSON”并將我的資料格式化為 JSON 物件。
var formData = {referenceID: 'Test', typeID: 3, supplierID: 2, isArchived: false}; $.ajax({ type: 'GET', cache: false, url: getActionUrl, // url: domain/controller/action |or| domain/area/controller/action dataType: 'json', contentType: 'application/json; charset=utf-8', headers: headers, // ignore if not needed. I use it for __RequestVerificationToken data: formData, success: function (data, status, xml) { // do something with the data }, error: function (xml, status, error) { console.log(xml) // do something if there was an error }, complete: function (xml, status) { } });
我認為您的問題可能是您使用的是“JSON.stringify”。它可能將您的 JSON 字串解釋為單個引數輸入,而不是兩個單獨的引數。
請參閱以下檔案片段。https://api.jquery.com/jquery.ajax/
- 如果指定了 json,則回應在作為物件傳遞給成功處理程式之前使用 jQuery.parseJSON 進行決議。決議的 JSON 物件通過 jqXHR 物件的 responseJSON 屬性可用。
- 資料選項可以包含格式為 key1=value1&key2=value2 的查詢字串,或格式為 {key1: 'value1', key2: 'value2'} 的物件。如果使用后一種形式,則在發送資料之前使用 jQuery.param() 將資料轉換為查詢字串。可以通過將 processData 設定為 false 來規避此處理。如果您希望將 XML 物件發送到服務器,則可能不需要處理;在這種情況下,將 contentType 選項從 application/x-www-form-urlencoded 更改為更合適的 MIME 型別。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/338596.html
標籤:C# 查询 json asp.net-mvc 变化中
