簡體   English   中英

來自 ajax 調用的 Json 數據無法在 onClick 觸發器中過濾

[英]Json data from ajax call can't be filtered in onClick trigger

當我的頁面加載時,我有一個運行的 ajax 調用。 當用戶選中一個復選框時,代碼將遍歷 ajax 調用返回的 json 數據,以確定顯示/隱藏哪些其他選項。

ajax 調用返回正確的數據,onClick 觸發器工作正常,但是當我嘗試過濾 json 數據時(使用 filter() 或使用 forEach 編寫我自己的方法失敗)

使用過濾器,無論我如何編寫命令或使用什么限定符,我都會得到一個空數組。 使用forEach,我用來檢查數據的if() 語句返回未定義,無論我如何編寫它(item.RecipeCategoryOptionID == "idIKnowExists" 返回"未定義")。

如果我插入調試器; 並在 Chrome 中運行,我可以在 forEach 調用中間放置一個斷點並在控制台中檢查我的 if() 語句,我得到一個真實值(在控制台中,調用 item.RecipeCategoryOptionID 返回一個實際值,而不是未定義)。

我什至嘗試將 ajax 調用放在 onClick function 中,只是為了強制 SOMETHING 工作(然后將過濾器語句放在成功函數中) 它也不是那樣工作的。

我該如何解決??

var constraints;

$(document).ready(function () {
    $.ajax({
        type: "GET",
        url: "@Url.Action("GetConstraints", "RecipeManagement")",
        dataType: "json",
        success: function (data) {
            constraints = data;
        }
    });
});

function CalledOnClick(checkbox) {
    var selectedOptionId = $(checkbox).attr("class");
    var isSelected = $(checkbox)[0].checked;

    ApplyConstraints(selectedOptionId, isSelected);
}

function ApplyConstraints(selectedOptionId, isSelected) {
    var relevantConstraints = constraints.filter(c => { return (c.RecipeCategoryOptionID == selectedOptionId) });

    relevantConstraints.forEach(function (item) {
        $("#isRequired" + item.RecipeCategoryTitleID).val(isSelected ? item.IsRequired : !item.IsRequired);
        $("#isProhibited" + item.RecipeCategoryTitleID).val(isSelected ? item.IsProhibited : !item.IsProhibited);
    });
}

已解決:C# 中的某些內容調用“return Json(constraints);” 正在將每個屬性名稱(鍵)的第一個字母轉換為小寫。

所以 item.RecipeCategoryTitleID 變成了 item.recipeCategoryTitleID

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM