在 Sitecore 页面编辑器中保存 Return 错误
Save Return Error in Sitecore Page Editor
我在页面编辑器中保存页面时出错。不知何故,当我从演示>详细信息编辑页面并将其显示在页面编辑器中时,它工作正常。错误日志在下面..
ERROR After parsing a value an unexpected character was encountered: {. Path 'scLayout', line 38, position 85. Exception: Newtonsoft.Json.JsonReaderException
Message: After parsing a value an unexpected character was encountered: {. Path 'scLayout', line 38, position 85. Source: Newtonsoft.Json
at Newtonsoft.Json.JsonTextReader.ParsePostValue()
at Newtonsoft.Json.JsonTextReader.ReadInternal()
at Newtonsoft.Json.JsonTextReader.Read()
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.PopulateObject(Object newObject, JsonReader reader, JsonObjectContract contract, JsonProperty member, String id)
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateObject(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue)
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateValueInternal(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue)
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.Deserialize(JsonReader reader, Type objectType, Boolean checkAdditionalContent)
at Newtonsoft.Json.JsonSerializer.DeserializeInternal(JsonReader reader, Type objectType)
at Newtonsoft.Json.JsonConvert.DeserializeObject(String value, Type type, JsonSerializerSettings settings)
at Newtonsoft.Json.JsonConvert.DeserializeObject[T](String value, JsonSerializerSettings settings)
at Sitecore.ExperienceEditor.Speak.Server.Requests.PipelineProcessorRequest`1.Process(RequestArgs requestArgs)
任何一种想法或解决方案都可能有所帮助
谢谢
检查正在保存的所有字段的内容。 Experience/Page 编辑器必须将所有内容序列化为一个 json 对象以调用它自己的内部 API。您的某个字段中可能存在杂散字符,从而导致 json 序列化程序出错。当内容编辑器从其他地方复制并粘贴他们的内容时,我 运行 进入了这个。
这是由 Sitecore 中已确认的错误引起的。 (开票时参考#84051)
您可以自己解决这个问题,但我仍然建议您通过 Sitecore,这样他们可以确保您拥有所需的东西。
要解决,请查看 /sitecore/shell/client/Sitecore/ExperienceEditor/ExperienceEditor.js
文件,在第 510 行,您会看到 decodeURIComponent
被调用了两次。
像data: decodeURIComponent(JSON.stringify(commandContext))
一样将其更新为只调用一次将解决错误。
同样,需要对 /sitecore/shell/client/Sitecore/ExperienceEditor/RibbonPageCode.js
文件的第 24 行进行更改。
在这里,添加 decodeURIComponent
方法调用是修复此文件的方法。所以像这样:ribbonUrl: decodeURIComponent(this.PageEditBar.get("url")),
这可能也解决了 Coveo 问题,但我的客户目前没有使用 Coveo,所以我无法验证。
这个 post 为我修复了。 请注意,我使用的是 Sitecore 8.2 更新 2
我的错误:
After parsing a value an unexpected character was encountered: {. Path 'scLayout', line 1, position 2246.
http://jockstothecore.com/experience-editor-error/
如果上述 link 确实有效,则说明为:
编辑文件 [Website]/sitecore/shell/client/Sitecore/ExperienceEditor/ExperienceEditor.js 并使用此更新版本替换 postServerRequest
函数的代码。
postServerRequest: function (requestType, commandContext, handler, async) {
function normalizeDeviceProp(d) {
if (typeof(d) !== "object")
throw new Error("Unexpected presentation details XML: cannot find device property");
if (d instanceof Array)
return d;
var normalized = [];
normalized.push(d);
return normalized;
}
var token = $('input[name="__RequestVerificationToken"]').val();
// Custom Brainjocks code to fix Experience Editor error.
var ajaxData = unescape(JSON.stringify(commandContext));
if (commandContext && commandContext.scLayout) {
var obj = JSON.parse(commandContext.scLayout);
if (obj && obj.r) {
normalizeDeviceProp(obj.r.d).forEach(function (d) {
if (d.r instanceof Array) {
d.r.forEach(function (r) {
var val = r["@par"];
if (val && val.length > 0) {
ajaxData = ajaxData.replace(unescape(val), val);
}
});
}
});
}
}
jQuery.ajax({
url: "/-/speak/request/v1/expeditor/" + requestType,
data: {
__RequestVerificationToken: token,
data: ajaxData
},
success: handler,
type: "POST",
async: async != undefined ? async : false
});
}
我在页面编辑器中保存页面时出错。不知何故,当我从演示>详细信息编辑页面并将其显示在页面编辑器中时,它工作正常。错误日志在下面..
ERROR After parsing a value an unexpected character was encountered: {. Path 'scLayout', line 38, position 85. Exception: Newtonsoft.Json.JsonReaderException
Message: After parsing a value an unexpected character was encountered: {. Path 'scLayout', line 38, position 85. Source: Newtonsoft.Json
at Newtonsoft.Json.JsonTextReader.ParsePostValue()
at Newtonsoft.Json.JsonTextReader.ReadInternal()
at Newtonsoft.Json.JsonTextReader.Read()
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.PopulateObject(Object newObject, JsonReader reader, JsonObjectContract contract, JsonProperty member, String id)
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateObject(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue)
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateValueInternal(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue)
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.Deserialize(JsonReader reader, Type objectType, Boolean checkAdditionalContent)
at Newtonsoft.Json.JsonSerializer.DeserializeInternal(JsonReader reader, Type objectType)
at Newtonsoft.Json.JsonConvert.DeserializeObject(String value, Type type, JsonSerializerSettings settings)
at Newtonsoft.Json.JsonConvert.DeserializeObject[T](String value, JsonSerializerSettings settings)
at Sitecore.ExperienceEditor.Speak.Server.Requests.PipelineProcessorRequest`1.Process(RequestArgs requestArgs)
任何一种想法或解决方案都可能有所帮助
谢谢
检查正在保存的所有字段的内容。 Experience/Page 编辑器必须将所有内容序列化为一个 json 对象以调用它自己的内部 API。您的某个字段中可能存在杂散字符,从而导致 json 序列化程序出错。当内容编辑器从其他地方复制并粘贴他们的内容时,我 运行 进入了这个。
这是由 Sitecore 中已确认的错误引起的。 (开票时参考#84051)
您可以自己解决这个问题,但我仍然建议您通过 Sitecore,这样他们可以确保您拥有所需的东西。
要解决,请查看 /sitecore/shell/client/Sitecore/ExperienceEditor/ExperienceEditor.js
文件,在第 510 行,您会看到 decodeURIComponent
被调用了两次。
像data: decodeURIComponent(JSON.stringify(commandContext))
一样将其更新为只调用一次将解决错误。
同样,需要对 /sitecore/shell/client/Sitecore/ExperienceEditor/RibbonPageCode.js
文件的第 24 行进行更改。
在这里,添加 decodeURIComponent
方法调用是修复此文件的方法。所以像这样:ribbonUrl: decodeURIComponent(this.PageEditBar.get("url")),
这可能也解决了 Coveo 问题,但我的客户目前没有使用 Coveo,所以我无法验证。
这个 post 为我修复了。 请注意,我使用的是 Sitecore 8.2 更新 2
我的错误:
After parsing a value an unexpected character was encountered: {. Path 'scLayout', line 1, position 2246.
http://jockstothecore.com/experience-editor-error/
如果上述 link 确实有效,则说明为:
编辑文件 [Website]/sitecore/shell/client/Sitecore/ExperienceEditor/ExperienceEditor.js 并使用此更新版本替换 postServerRequest
函数的代码。
postServerRequest: function (requestType, commandContext, handler, async) {
function normalizeDeviceProp(d) {
if (typeof(d) !== "object")
throw new Error("Unexpected presentation details XML: cannot find device property");
if (d instanceof Array)
return d;
var normalized = [];
normalized.push(d);
return normalized;
}
var token = $('input[name="__RequestVerificationToken"]').val();
// Custom Brainjocks code to fix Experience Editor error.
var ajaxData = unescape(JSON.stringify(commandContext));
if (commandContext && commandContext.scLayout) {
var obj = JSON.parse(commandContext.scLayout);
if (obj && obj.r) {
normalizeDeviceProp(obj.r.d).forEach(function (d) {
if (d.r instanceof Array) {
d.r.forEach(function (r) {
var val = r["@par"];
if (val && val.length > 0) {
ajaxData = ajaxData.replace(unescape(val), val);
}
});
}
});
}
}
jQuery.ajax({
url: "/-/speak/request/v1/expeditor/" + requestType,
data: {
__RequestVerificationToken: token,
data: ajaxData
},
success: handler,
type: "POST",
async: async != undefined ? async : false
});
}