【问题标题】:I am requesting a GET via ajax to express. But express doesn't receive the request我正在通过 ajax 请求 GET 来表达。但是快递没有收到请求
【发布时间】:2018-04-05 18:20:40
【问题描述】:

这是我的代码。

后端代码(快递)

router.get('/principal/leave/approval/:id',function(req,res){
 console.log('requested');
 var approval;
  if(req.body.approve){
   approval=true;
  }else{
   approval=false;
  }
  leaveDB.update({_id:req.params.id},{approved:approval},function(err){
   if(err){
    console.log(err);
   }else{
    res.send('success');
  }
 });
});

这里是前端

<input type='button' value="Approve" id="Approve" class="btn<%=details._id%>"/>
<input type='button' value="Disapprove" id="Disapprove" class="btn<%=details._id%>"/>
</form>
<script>
  $(document).ready(function(){
    $('.btn').on('click',function(){
     var id=this.className.slice(4);
     $.ajax({
      type:'GET',
      url:'/principal/leave/approval/'+id,
      data:{approval:this.id},
      success:function(data){
       alert('success');
      }
    });
   });

  });
</script>

当我运行它时,我什至看不到控制台中打印的“请求”。我的代码中是否有任何错误,或者我应该使用其他东西来发出这样的请求? (我使用ejs作为视图引擎)

【问题讨论】:

  • 您的 Express app 如何为 .use() 设置 router?如果您检查浏览器的开发工具,它的控制台或网络监视器是否显示请求有任何问题?或者,jQuery 本身是否报告了error? – 旁注:GET requests shouldn't be expected to have a req.body.
  • 既然这是一个 GET 请求,那么当您从浏览器访问该 url 时会发生什么?
  • Uncaught TypeError: $.ajax is not a function at HTMLInputElement. (5ac61a68d89acf03f0379779?approve=Approve:88) 在 HTMLInputElement.dispatch (jquery-3.2.1.slim.min.js: 3) 在 HTMLInputElement.q.handle (jquery-3.2.1.slim.min.js:3)
  • 另外,GET 似乎是错误的操作。
  • 使用支持 $.ajax 的 jQuery 版本

标签: javascript node.js ajax express get


【解决方案1】:

在贡献者的帮助下,我终于明白了我的代码中的错误。 问题不在于代码,但由于我使用的是不支持 ajax 的 jQuery 版本,所以浏览器不理解 ajax 请求。相反,它显示 未捕获的类型错误:$.ajax 不是函数。因此,如果有人遇到同样的问题,最好在您的 html 布局中使用 &lt;script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"&gt;&lt;/script&gt; 尝试您的程序。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-07-25
    • 2020-07-29
    • 1970-01-01
    • 2013-02-28
    • 2017-06-18
    相关资源
    最近更新 更多