javascript .data() 按空格切割字符串内容
javascript .data() cuts the string content by whitespace
所以,我遇到了这个问题,我在网络应用程序中有一个向后按钮。这是按钮的 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"}
但是在我尝试获取作为 data/attribute 传递的 json 之后,带有 html 元素,如下所示:
var input = $(inData).data("param");
我收到的值如下所示:
input = "{"site":"GAV","location":"EG","set":"INVENTORY","binnum":"B01"
正如您所看到的那样,它由于某种原因切断了空格后的所有字符,尽管在最后一个函数被添加到列表中和该函数被再次调用之间没有发生任何事情,也能够在应用程序中倒退。
我知道我的解释很混乱,可能很难理解,但这是我能解释的最好的了。
如有必要,我可以提供更多代码。
因此,我确实需要 getPrevFunction 的整个 json(它作为 "prevViews" 传递)
像下面那样使用 encodeURIComponent()
和 decodeURIComponent()
设置数据
inData = "<div data-param=" + encodeURIComponent(JSON.stringify(inData)) + ">";
获取数据
var input = JSON.parse(decodeURIComponent($(testDv).data('param')));
现在由于空白,对象中不会有任何切割。
所以,我遇到了这个问题,我在网络应用程序中有一个向后按钮。这是按钮的 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"}
但是在我尝试获取作为 data/attribute 传递的 json 之后,带有 html 元素,如下所示:
var input = $(inData).data("param");
我收到的值如下所示:
input = "{"site":"GAV","location":"EG","set":"INVENTORY","binnum":"B01"
正如您所看到的那样,它由于某种原因切断了空格后的所有字符,尽管在最后一个函数被添加到列表中和该函数被再次调用之间没有发生任何事情,也能够在应用程序中倒退。
我知道我的解释很混乱,可能很难理解,但这是我能解释的最好的了。 如有必要,我可以提供更多代码。
因此,我确实需要 getPrevFunction 的整个 json(它作为 "prevViews" 传递)
像下面那样使用 encodeURIComponent()
和 decodeURIComponent()
设置数据
inData = "<div data-param=" + encodeURIComponent(JSON.stringify(inData)) + ">";
获取数据
var input = JSON.parse(decodeURIComponent($(testDv).data('param')));
现在由于空白,对象中不会有任何切割。