Javascript data()通过空格剪切字符串内容
所以,我有一个问题,我在一个Web应用程序中有一个后退按钮。这是按钮的javascript代码:Javascript data()通过空格剪切字符串内容,javascript,jquery-mobile,Javascript,Jquery Mobile,所以,我有一个问题,我在一个Web应用程序中有一个后退按钮。这是按钮的javascript代码: function getPrevFunction() { localDBSelect("prevViews", function (prevViews) { if (prevViews) { var prevViewObject = $.parseJSON(prevViews); var prevView
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中找到答案我很高兴听到,你能将答案标记为已接受/已批准的答案吗?谢谢。。。