我编写了一个 JS 函数来解析 JSON 响应并将其显示为 toast 消息。一切正常。我现在正在添加一个附加功能。 JSON 响应采用以下格式:
{
"type": "message",
"message": "Payment Approved with Order Number: &&Secure.OrderNum&& and Transaction ID: &&Secure.TransactionNum&&"
}
我不想获取整条消息,而是想提取 TransactionNum
的变量值并将其显示在 HTML 中(因此不仅仅是在 toast 中)。
所以这是我写的用于提取消息对象中的一个值的 JS:
_onDataEvent(jsonData) {
let eventData = JSON.parse(jsonData);
// Is this a message?
if (eventData.type === "message") {
// Yes, show the status
let message = eventData.message;
const evt = new ShowToastEvent({
title: "Payment Status",
message: message,
variant: 'info'
});
dispatchEvent(evt);
}
// Is this a result?
else if (eventData.type === 'result') {
// Yes, show the result
let success = eventData.success;
let message = eventData.message;
const evt = new ShowToastEvent({
title: "Payment Result",
message: message,
variant: success ? 'success' : "error",
url: "www.five9.com"
});
transaction(message); //I added this and VS code keeps on putting a red squiggly line on it.
dispatchEvent(evt);
}
}
transaction(message) {
var words = message.split(" ");
var transactionId = words[-1];
return transactionId;
}
现在,我在调用该方法时遇到错误。它说
transaction is not defined
当我将 function 关键字添加到方法时,我在方法调用中没有看到红色波浪线,但我收到另一个错误提示
Unexpected token: A constructor, expression, accessor or property was expected
我不知道如何解决这个问题。我做错了什么吗 方法?方法写对了吗?我需要添加什么或 改变顺序?
最佳答案
您的代码可能位于对象字面量或类声明中。
- 如果省略 function 关键字,则在对象上定义一个方法(不是全局作用域函数)。
- 您不能在那里使用 function 关键字,因为这是不允许的。
要解决它,将函数声明放在 _onDataEvent
方法中,以在本地创建它:
_onDataEvent(jsonData) {
function transaction(message) {
var words = message.split(" ");
var transactionId = words[-1];
return transactionId;
}
let eventData = JSON.parse(jsonData);
// Is this a message?
if (eventData.type === "message") {
// Yes, show the status
let message = eventData.message;
const evt = new ShowToastEvent({
title: "Payment Status",
message: message,
variant: 'info'
});
dispatchEvent(evt);
}
// Is this a result?
else if (eventData.type === 'result') {
// Yes, show the result
let success = eventData.success;
let message = eventData.message;
const evt = new ShowToastEvent({
title: "Payment Result",
message: message,
variant: success ? 'success' : "error",
url: "www.five9.com"
});
transaction(message);
dispatchEvent(evt);
}
}
此外,transaction
函数在其当前形式中没有任何用处:
- 它不会改变任何东西
- 它返回一个值,但调用者忽略它
- 您不能使用负数从后向访问数组索引,它将访问
"-1"
属性(通常为undefined
)
但这些都离题了。
关于javascript - 在 JavaScript 中使用/定义函数时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58845377/