$.grep не работает со мной для фильтрации JSON

Попытка использовать grep, чтобы я не делал несколько вызовов на свой сервер для элементов управления, которые он создает -

$.ajax({
    type: "POST",
    url: "../WebMethods/MarketPersuitMethods.aspx/GetQueryInfo",
    data: '{Status: "' + Name + '", search: "' + SearchBox.text() + '" }',
    contentType: "application/json; charset=utf-8",
    dataType: 'json',
    async: false,
    success: function (d) {
        var preparse = JSON.stringify($.parseJSON(d.d));
                    
        var data = $.grep(preparse, function (element, index) {
            return element.status.trim() == "Pending";
        });
        $("[id*=TextBox2]").text(preparse);
    }
});

Это возвращает данные в формате JSON, если я тестирую переменную preparse.

Я не могу опубликовать JSON, потому что его так много, и его нужно будет анонимизировать. Однако в качестве образца он возвращает что-то вроде следующего:

[{
    "Project ID": "18180",
    "OPRN": null,
    "Proj_Type": "2049",
    "CompleteDate": "2020-05-21T00:00:00",
    "SQFT": 2000,
    "State": "FL      ",
    "County": "Orange",
    "status": "Pending"
},
{
    "Project ID": "18180",
    "OPRN": null,
    "Proj_Type": "2049",
    "CompleteDate": "2020-05-21T00:00:00",
    "SQFT": 2000,
    "State": "SC",
    "County": "Orange",
    "status": "Pending"
},
{
    "Project ID": "18180",
    "OPRN": null,
    "Proj_Type": "2049",
    "CompleteDate": "2020-05-21T00:00:00",
    "SQFT": 2000,
    "State": "GA",
    "County": "Orange",
     "status": "Won"
}];

Однако при попытке $.grep я получаю следующее с переменной data:

[{
    {
        "P,r,o,j,e,c,t, ,I,D,",:, ",1,8,1,8,0,",
        ",O,P,R,N,",:, ,n,u,l,l,
        "P,r,o,j,_,T,y,p,e,",:, ,",2,0,4,9,",
        "C,o,m,p,l,e,t,e,D,a,t,e,",:, ,",2,0,2,0,-,0,5,-,2,1,T,0,0,:,0,0,:,0,0,",
        ",S,Q,F,T,",:, ,2,0,0,0,,
        "S,t,a,t,e,",:, ,",G,A,",
        "C,o,u,n,t,y,",:, ,",O,r,a,n,g,e,",
         "s,t,a,t,u,s,": ",W,o,n,,
    }];
var preparse = JSON.stringify(... создает строку, поэтому вы пытаетесь найти строку. Вы уверены, что знаете, что такое JSON?
freedomn-m 18.03.2022 19:11
dataType: 'json', сообщает jquery, что ваш сервер возвращает json и что jquery должен преобразовать его в object для вас, поэтому d является объектом javascript. Затем вы анализируете d.d, как будто это json - , что дает вам другой объект javascript, который вы затем конвертируете назад в json, поэтому ваша служба создает объект, преобразует его в строку json, а затем добавляет его к возвращаемому значению как свойство "d ". Почему бы просто не вернуть одну строку json из вашего сервиса и не использовать $.grep(d.d, ...)? Как бы то ни было, из вашего кода вы просто хотите изменить наверное на var preparse = $.parseJSON(d.d);
freedomn-m 18.03.2022 19:16
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
2
25
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Как указано в комментариях, вам вообще не нужно проводить какую-либо подготовку или подготовку вашего ответа. Предоставленный вами образец — это JSON, и ваш код AJAX сообщает JS, что нужно ожидать ответа JSON (dataType: 'json'), поэтому в вашем обратном вызове successd уже есть JSON. Просто избавьтесь от подготовительного материала, и ваш код заработает:

let d = [
    {
        "Project ID": "18180",
        "OPRN": null,
        "Proj_Type": "2049",
        "CompleteDate": "2020-05-21T00:00:00",
        "SQFT": 2000,
        "State": "FL      ",
        "County": "Orange",
        "status": "Pending"
    },
    {
        "Project ID": "18180",
        "OPRN": null,
        "Proj_Type": "2049",
        "CompleteDate": "2020-05-21T00:00:00",
        "SQFT": 2000,
        "State": "SC",
        "County": "Orange",
        "status": "Pending"
    },
    {
        "Project ID": "18180",
        "OPRN": null,
        "Proj_Type": "2049",
        "CompleteDate": "2020-05-21T00:00:00",
        "SQFT": 2000,
        "State": "GA",
        "County": "Orange",
        "status": "Won"
    }
];

var data = $.grep(d, function (element, index) {
    return element.status.trim() == "Pending";
});

console.dir(data);
<script src = "https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

Другие вопросы по теме