【问题标题】:Why my Ajax object comes back as undefined?为什么我的 Ajax 对象返回为未定义?
【发布时间】:2019-01-21 21:39:42
【问题描述】:

我正在尝试发出 Ajax 请求,但我的对象一直以未定义的形式返回。

这是我的客户端代码:

<a class="clicklink" href="/bookDetails"><h5 class="card-title"><%= title %></h5></a>

<script type="text/javascript">
$(document).ready(function(){
  $(".card-title").click(function(){
    $.ajax({
      type: 'post',
      contentType: "application/json; harset=UTF-8",
      data: JSON.stringify({ID:'<%= ID %>'}),
      url: 'http://localhost:3000/bookDetails',
      success: function(data){
        console.log('success');
      }
    });
  });
});
</script>

这是我的发帖请求代码:

router.post('/bookDetails', (req, res) => {
  console.log(req.body.ID);
});

顺便说一句,我将我的&lt;h5&gt; 标签放在一个链接中,这样它就可以点击了。我不认为这可能是问题,但我不这么认为。但这是我回来的错误:

无法读取未定义的属性“ID”

有什么想法吗?谢谢。

【问题讨论】:

  • 不相关,但在 contentType 字段中,您缺少 'charset' 中的 'c'
  • @pfcodes 我修复了它。但这不是问题哈哈
  • 您是否尝试添加一个失败:函数(数据)并查看数据对象以了解发生了什么?
  • @BlackICE 知道了。当我应该将它放在 index.js 文件中时,我将 body-parser 的配置放在了我的路由文件夹中。

标签: javascript jquery node.js ajax ejs


【解决方案1】:

如果您使用 Express,请确保您已启用 body-parser 中间件。

相关帖子:Express.js req.body undefined

【讨论】:

    【解决方案2】:

    错误消息告诉您无法读取该属性,因为父级未定义。造成这种情况的一个常见原因是来自 ajax 调用的响应是字符串而不是对象。你检查过返回类型吗?

    【讨论】:

    • 我的配置不正确,但我已经解决了这个问题。不过还是谢谢。
    猜你喜欢
    • 1970-01-01
    • 2012-01-05
    • 1970-01-01
    • 2021-11-10
    • 1970-01-01
    • 1970-01-01
    • 2021-04-25
    • 2019-11-30
    • 1970-01-01
    相关资源
    最近更新 更多