Javascript SyntaxError:使用sessionStorage在JSON中位置0处出现意外标记m
所以我要做的是向iframe发送一个表单操作,并使用JSON.stringify()存储表单输入数据,以防表单失败。下面是iframe用于确认页面的代码,以及first console.log()的数据。它似乎在JSON.parse部分失败Javascript SyntaxError:使用sessionStorage在JSON中位置0处出现意外标记m,javascript,json,session-storage,Javascript,Json,Session Storage,所以我要做的是向iframe发送一个表单操作,并使用JSON.stringify()存储表单输入数据,以防表单失败。下面是iframe用于确认页面的代码,以及first console.log()的数据。它似乎在JSON.parse部分失败 <script type='text/javascript' src="/common/js/jquery-1.12.0-min.js"></script> <script type='text/javascript'>
<script type='text/javascript' src="/common/js/jquery-1.12.0-min.js"></script>
<script type='text/javascript'>
$(function(){
console.log(sessionStorage);
var formdata = sessionStorage.getItem('formdata'),
formid = sessionStorage.getItem('formid'),
dataParsed = JSON.parse(formdata);//,
//parent = window.parent.document;
// We need to check if error, and if failed, then change wizard to be correct
console.log(formdata, formid);
});
</script>
dataJson
将包含JSON格式的数据。它看起来更像是一个查询字符串,而不是JSON对象。为了存储formdata,我使用了例如JSON.stringify($('form:input'))并将其存储在formdata值中。Storage.formdata:“merchant_defined_d…”
不是JSON格式。为什么要解析它?您能告诉我们如何调用sessionStorage.setItem
?然后如何创建JSON字符串吗?以上是我如何创建的编辑。修改它使其具有存储该对象的方式。
Storage.formdata: "merchant_defined_data1=0&merchant_defined_data2=0&merchant_defined_data3=1&merchant_defined_data4=0&merchant_defined_data5=monthly&merchant_defined_data6=0.00&merchant_defined_data7=0&bill_to_forename=John&bill_to_surname=Madrigal&bill_to_address_line1=+652+S+Walnut&bill_to_address_line2=+&bill_to_address_city=Cookeville&bill_to_address_state=TN&bill_to_address_country=US&bill_to_address_postal_code=38501&bill_to_email=jmadrigal%40tappublishing.com&amount=6.00&override_custom_receipt_page=http%3A%2F%2F74.43.119.28%2Fservice%2Faccount%2Fcsresponse&override_custom_cancel_page=http%3A%2F%2F74.43.119.28%2Fservice%2Faccount%2Fcsresponse
Storage.formid: "optionalPackagesForm"
length: 2
VM8596:1 Uncaught SyntaxError: Unexpected token m in JSON at position 0
at JSON.parse (<anonymous>)
at HTMLDocument.<anonymous> (csresponse:27)
at i (jquery-1.12.0-min.js:2)
at Object.fireWith [as resolveWith] (jquery-1.12.0-min.js:2)
at Function.ready (jquery-1.12.0-min.js:2)
at HTMLDocument.K (jquery-1.12.0-min.js:2)
// Store the form data, and any other session data needed for failed transaction_id
var sigSelect = function(){
var sigFields = ['card_type','card_number','card_cvn','card_expiry_date','profile_id',
'locale','signed_date_time','reference_number', 'method',
'currency','signed_field_names','access_key','transaction_uuid',
'payment_method','signature','unsigned_field_names','transaction_type'],
selectState = ':input:not(';
$.each(sigFields, function(index, val){ selectState += '[name="'+ val +'"],'; });
selectState = selectState.replace(/,\s*$/,"");
return selectState += ')'
},
inp = $(sigSelect(), form).serialize();
sessionStorage.setItem('formdata', inp);
sessionStorage.setItem('formid', form.attr('id'));
var formData = "merchant_defined_data1=0&merchant_defined_data2=0&merchant_defined_data3=1&merchant_defined_data4=0&merchant_defined_data5=monthly&merchant_defined_data6=0.00&merchant_defined_data7=0&bill_to_forename=John&bill_to_surname=Madrigal&bill_to_address_line1=+652+S+Walnut&bill_to_address_line2=+&bill_to_address_city=Cookeville&bill_to_address_state=TN&bill_to_address_country=US&bill_to_address_postal_code=38501&bill_to_email=jmadrigal%40tappublishing.com&amount=6.00&override_custom_receipt_page=http%3A%2F%2F74.43.119.28%2Fservice%2Faccount%2Fcsresponse&override_custom_cancel_page=http%3A%2F%2F74.43.119.28%2Fservice%2Faccount%2Fcsresponse";
var dataJson = {};
(formData .split('&')).forEach(function(data){
dataJson[data.split("=")[0]] = data.split("=")[1];
});
console.log(dataJson);