Javascript data()通过空格剪切字符串内容

Javascript data()通过空格剪切字符串内容,javascript,jquery-mobile,Javascript,Jquery Mobile,所以,我有一个问题,我在一个Web应用程序中有一个后退按钮。这是按钮的javascript代码: function getPrevFunction() { localDBSelect("prevViews", function (prevViews) { if (prevViews) { var prevViewObject = $.parseJSON(prevViews); var prevView

所以,我有一个问题,我在一个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();
            }
        }
    });
}
函数getPrevFunction() { localDBSelect(“PrevView”,函数(PrevView) { 如果(以前的视图) { var prevViewObject=$.parseJSON(prevViews); var prevViewArray=prevViewObject['funcObjects']; 如果(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); 如果(inData!==“”) { if(prevFunc!=“getGuiSiteList”) { inData=“”; } $('#fieldcontain')[prevFunc](inData,prevConfig); } 否则{ $('#fieldcontain')[prevFunc](prevConfig); } 如果(prevViewArray.length==1) { setVisibilityForBackBtn(false);//如果最后。。 } prevViewObject['funcObjects']=prevViewArray; localDBInsert(“prevViews”,JSON.stringify(prevViewObject)); } 否则{ 设置BackbTN的可见性(false); } $(“#分包商”).html(“”); 如果(!$('#fieldcontain')。是(“:可见”)) { $('#fieldcontain').show(); } } }); } 我的问题是,我并不总是获得json对象的全部内容。如;json,一开始是这样的:
input={site:“GAV”,location:“EG”,set:“INVENTORY”,binnum:“B01 T09”}

但在我尝试获取json后,它将作为一个数据/属性传递,并带有如下html元素:
var输入=$(inData).data(“参数”)

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

正如您所能看到的,它出于某种原因切断了空格后的所有字符,尽管最后的函数被添加到列表中,然后再次调用该函数,但这两个事实之间并没有发生任何变化,因此它也能够在应用程序中倒退

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


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

使用
encodeURIComponent()
decodeURIComponent()
如下

设置数据

inData = "<div data-param=" + encodeURIComponent(JSON.stringify(inData)) + ">";
var input = JSON.parse(decodeURIComponent($(testDv).data('param')));

现在,由于空白,对象中不会有剪切。

使用jQuery创建元素,即
inData=$('').data('param',inData);
使用encodeURIComponent()和decoduricomponent()
inData=“”
并使用decodeURIComponent()获取数据。请从这个链接中引用这个问题。Hrm,我似乎仍然无法实现。当我按照建议进行操作时,google chrome开发者工具控制台会在HtmlLevel的JSON.parse()的Function.parseJSON(jquery-1.8.2.min.js:2)的位置0处抛出此错误:未捕获的语法错误:JSON中的意外标记%。(plugins.js:1471)在Function.each(jquery-1.8.2.min.js:2)在init.each(jquery-1.8.2.min.js:2)在init.$.fn.getItemList(plugins.js:1458)对我做错了什么有什么想法吗?@Vic应该可以,你在开发者工具中调试代码了吗?嘿@Vic,我的答案有一点变化,它会成功的,在@Vic中找到答案我很高兴听到,你能将答案标记为已接受/已批准的答案吗?谢谢。。。