开发者问题收集

TypeError:无法在回调中读取未定义的属性(读取“dataResponse”)

2021-10-12
10740

我正在尝试根据您给我的说明查询 api,但出现此错误:

(index):30 未捕获 TypeError:无法读取未定义的属性(读取“dataResponse”) 在回调((index):30) 在 HTMLButtonElement.onclick((index):23) 回调@(index):30 onclick @(index):23

api 说明 https://drive.google.com/file/d/1KHLduw46l1e3aIGCliTvn1gYuJhv8Npy/view?usp=sharing 你能帮我吗

<!doctype html>
<html lang="en">
  <head>
    <!-- Required meta tags -->
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">

      <!-- Bootstrap CSS -->

    <title>Duke Business School</title>
    <script
    data-user="user([email protected]) "
    data-password="(password 'sha256Hex')"
    data-button=false
    data-response=true
    data-amount="100.01"
    data-commerce="Affinitas"
    src="http://52.22.36.22:9020/js/transactions.js">
   </script> 
  </head>
  <body>

        <button onclick="callback();"> pagar</button>
      </div>
    </section>

   <script>
    function callback(data){
    alert("RESPUESTA OBTENIDA EN HTML");
    alert("Operación: " + data.dataResponse.description + " Autorización: " +
   data.dataResponse.authorization)
    }
   </script>
  </body>
</html>

2个回答

看起来,此处的错误只是一个简单的用户错误,与 API 无关。

您正在使用按钮 onclick 调用“callback()”,而没有传递任何参数。这与“callback(undefined);”相同。

我认为您的逻辑在这里有点混乱。您的按钮应该调用 API,API 应该调用回调。相反,您使用按钮调用回调,完全跳过了 API。

通常,错误 TypeError: Cannot read properties of undefined 是指尝试引用对象或对象属性中不存在的属性。

问题是,您正在尝试读取 dataResponse 的属性“description”,但 dataResponse 不存在。但是编译器不知道 dataResponse 是什么,因为变量 data 不存在。

data.dataResponse.description // <- 与 Undefined.undefined.undefined 相同

Alex Navarro
2021-10-12

根本原因就在这里 onclick="callback();" ,您没有在回调中传递任何数据,而是试图访问函数中的数据,而该数据实际上是 未定义的

我不确定这个 api,但在您的按钮点击时

  1. 您应该将用户重定向到网关页面,该页面将具有独立于您的按钮的两个脚本

  1. 您应该在按钮点击时将上述脚本附加到 dom 中,它会自动处理回调
Shyam
2021-10-12