因此,我在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”传递)
答案 0 :(得分:0)
像下面一样使用encodeURIComponent()
和decodeURIComponent()
设置数据
inData = "<div data-param=" + encodeURIComponent(JSON.stringify(inData)) + ">";
获取数据
var input = JSON.parse(decodeURIComponent($(testDv).data('param')));
现在,由于空白,对象中将没有切屑。