javascript .data()将字符串内容切成空白

时间:2018-06-25 13:26:53

标签: javascript jquery-mobile

因此,我在Web应用程序中有一个向后按钮的问题。这是该按钮的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"}

,但是在我尝试获取带有html元素作为数据/属性传递的json之后,如下所示: var input = $(inData).data("param");

我收到的值如下所示: input = "{"site":"GAV","location":"EG","set":"INVENTORY","binnum":"B01"

如您所见,尽管由于最后一个函数被添加到列表中,然后再次调用该函数之间也没有任何反应,但由于某种原因,它已将空格后的所有字符都切断了在应用程序中倒退。

我确实意识到我的解释是混乱的,可能很难理解,但这是我所能解释的最好的解释。 如果需要,我可以提供更多代码。

因此,我确实需要getPrevFunction的整个json(作为“ prevViews”传递)

1 个答案:

答案 0 :(得分:0)

像下面一样使用encodeURIComponent()decodeURIComponent()

设置数据

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

获取数据

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

现在,由于空白,对象中将没有切屑。