javascript .data () обрезает содержимое строки по пробелам - PullRequest
0 голосов
/ 25 июня 2018

Итак, у меня есть проблема, когда у меня есть кнопка «назад» в веб-приложении.Это код javascript для кнопки:

function getPrevFunction()
{
    localDBSelect("prevViews", function (prevViews)
    {
        if (prevViews)
        {
            var prevViewObject = $.parseJSON(prevViews);
            var prevViewArray = prevViewObject['funcObjects'];
            if (prevViewArray.length > 1)
            {
                var prevArrayIndex = prevViewArray.length - 2;
                var actArrayIndex = prevViewArray.length - 1;
                var prevFuncObject = prevViewArray[prevArrayIndex];
                var prevFunc = prevFuncObject['function'];
                var prevConfig = prevFuncObject['config'];
                var inData = prevFuncObject['inData'];
                prevViewArray.splice(actArrayIndex, 1);

                if (inData !== "")
                {
                    if (prevFunc !== "getGuiSiteList")
                    {
                        inData = "<div data-param=" + JSON.stringify(inData) + ">";
                    }
                    $('#fieldcontain')[prevFunc](inData, prevConfig);
                }
                else {
                    $('#fieldcontain')[prevFunc](prevConfig);
                }

                if (prevViewArray.length === 1)
                {
                    setVisibilityForBackBtn(false); //If last..
                }

                prevViewObject['funcObjects'] = prevViewArray;
                localDBInsert("prevViews", JSON.stringify(prevViewObject));
            }
            else {
                setVisibilityForBackBtn(false);
            }
            $('#subcontainer').html("");
            if(!$('#fieldcontain').is(":visible"))
            {
                $('#fieldcontain').show();
            }
        }
    });
}

Моя проблема в том, что я не всегда получаю все содержимое объекта json.Например;json, в начале это выглядит так: input = {site: "GAV", location: "EG", set: "INVENTORY", binnum: "B01 T09"}

, но после того, как я попытался извлечь json, который передается как данные / атрибут, с html-элементом, например, так: var input = $(inData).data("param");

значение, которое я получаю, выглядит следующим образом: input = "{"site":"GAV","location":"EG","set":"INVENTORY","binnum":"B01"

Как вы видите, по какой-то причине оно обрезало все символы после пробела, несмотря на то, что ничего не происходит между фактом, что последние функциидобавляется в список, и эта функция затем вызывается снова, чтобы иметь возможность вернуться назад в приложении.

Я понимаю, что мое объяснение запутанно и, вероятно, трудно понять, но это лучшее, что я могу объяснить.Я могу предоставить больше кода, если это необходимо.

Итак, мне нужен весь json для функции getPrevFunction (она передается как "prevViews")

1 Ответ

0 голосов
/ 25 июня 2018

Используйте encodeURIComponent() и decodeURIComponent(), как показано ниже

Настройка данных

inData = "<div data-param=" + encodeURIComponent(JSON.stringify(inData)) + ">";

Получение данных

var input = JSON.parse(decodeURIComponent($(testDv).data('param')));

Теперь в объекте не будет вырезок из-за пробелов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...