无法使用JSON将字符串值从c#传递到JavaScript
我正在使用ApachCordova插件为WindowsPhone开发一个WindowsPhone应用程序。 我需要将参数从C#层传递到JavaScript层,并使用C#层中带格式字符串的PluginResult和JavaScript层(cordova.js文件)的CordovaCommandResult插件中的JSON.parse()函数来完成 但是,当尝试传递字符串值时,出现异常“语法错误:无效字符”。无法使用JSON将字符串值从c#传递到JavaScript,c#,javascript,json,cordova,C#,Javascript,Json,Cordova,我正在使用ApachCordova插件为WindowsPhone开发一个WindowsPhone应用程序。 我需要将参数从C#层传递到JavaScript层,并使用C#层中带格式字符串的PluginResult和JavaScript层(cordova.js文件)的CordovaCommandResult插件中的JSON.parse()函数来完成 但是,当尝试传递字符串值时,出现异常“语法错误:无效字符”。 如何传递字符串值,以便JSON.parse()能够成功解析它 这是我的密码: c层: 其中
如何传递字符串值,以便JSON.parse()能够成功解析它 这是我的密码: c层: 其中unit是一个字符串变量,它会导致异常 JavaScript层:cordova.js 调用GetConfiguration函数:
getConfiguration: function (successCallback, errorCallback, args) {
var win = function (result) {
successCallback(result);
};
var fail = errorCallback && function (code) {
errorCallback(code);
};
exec(win, fail, "SensorsManager", "GetConfiguration", args);
},
分析从c层返回的结果:
实际上,您正在创建的JSON不正确 更多要点:
1) 您发送回的响应内容类型是什么。如果您使用第三方库创建Json,然后直接从服务器以文本/Json的形式发送内容类型会更好。当您说我的Json格式错误时,您的意思是什么?您的意思是我从GetConfiguration函数返回的字符串不正确?是的,不是您只需获取该字符串并使用jsonlint.comOk对其进行验证。我得到了它。在JSON字符串中-每个字符串值都必须用引号括起来,例如:“x”:“foo”而不是像我原来那样的“x”:foo。还可以发送JSON格式的其他值。单位,指数.ToString(“0.0”,CultureInfo.InvariantCulture),频率.ToString(“0.0,CultureInfo.InvariantCulture”)。我认为它们也不是json格式。
getConfiguration: function (successCallback, errorCallback, args) {
var win = function (result) {
successCallback(result);
};
var fail = errorCallback && function (code) {
errorCallback(code);
};
exec(win, fail, "SensorsManager", "GetConfiguration", args);
},
define("cordova/plugin/windows8/CordovaCommandResult", function (require,exports,
module) {
var cordova = require('cordova');
var channel = require('cordova/channel');
// singular WP callback function attached to window,
//status is used to determine if it is a success or error
module.exports = function (status, callbackId, args, cast) {
if (status === "backbutton") {
// do not detach backbutton event, as we need to be able to catch exceptions
cordova.fireDocumentEvent("backbutton", undefined, true);
return "true";
}
else if (status === "resume") {
cordova.fireDocumentEvent('resume');
return "true";
}
else if (status === "pause") {
cordova.fireDocumentEvent('pause');
return "true";
}
var parsedArgs;
try {
parsedArgs = JSON.parse(args);
}
catch (ex) {
return;
}
var safeStatus = parseInt(status, 10);
if (safeStatus === cordova.callbackStatus.NO_RESULT ||
safeStatus === cordova.callbackStatus.OK) {
cordova.callbackSuccess(callbackId, parsedArgs, cast);
}
else {
cordova.callbackError(callbackId, parsedArgs, cast);
}
};
});