Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs 如何在Express中获取URL参数?_Angularjs_Node.js_Express_Angular Ui Router - Fatal编程技术网

Angularjs 如何在Express中获取URL参数?

Angularjs 如何在Express中获取URL参数?,angularjs,node.js,express,angular-ui-router,Angularjs,Node.js,Express,Angular Ui Router,在Express中获取URL参数时遇到问题。 在客户机(Angular)上,我定义了状态(ui.router)并用新状态发送URL(id): .state('home.detail', { url: '/:id', templateUrl: 'views/detail.html', controller: 'DetailController' }); 在后端,我正在尝试获取此URL(id) 但是我得到了id的未定义的值(console.log(id))。 我做错了什么?您应该改用

在Express中获取URL参数时遇到问题。 在客户机(Angular)上,我定义了状态(ui.router)并用新状态发送URL(id):

.state('home.detail', {
  url: '/:id',
  templateUrl: 'views/detail.html',
  controller: 'DetailController'
 });
在后端,我正在尝试获取此URL(id)

但是我得到了id的
未定义的
值(console.log(id))。

我做错了什么?

您应该改用这个:

var id = req.params.id;
  • req.params
    包含路由参数(在 (网址)
  • req.query
    包含URL查询参数(在 URL)

您应该改用此选项:

var id = req.params.id;
  • req.params
    包含路由参数(在 (网址)
  • req.query
    包含URL查询参数(在 URL)

    • 请求中将
      :id
      放入params对象中。所以,你要做的就是:

      var id = req.params.id;
      
      此外,当您构建
      查询字符串时,需要向其传递id值,而不是名为“id”的字符串。您必须执行以下操作:

      var queryString = "SELECT * FROM `table` WHERE table.ID=" + id;
      

      :id
      被放入请求中的params对象中。所以,你要做的就是:

      var id = req.params.id;
      
      此外,当您构建
      查询字符串时,需要向其传递id值,而不是名为“id”的字符串。您必须执行以下操作:

      var queryString = "SELECT * FROM `table` WHERE table.ID=" + id;
      

      请让我知道我的答案是否解决了您的问题:)请让我知道我的答案是否解决了您的问题:)我尝试了
      req.params.id
      并将查询更改为
      var queryString=“SELECT*FROM table WHERE table.id=“+id我得到了错误:ER_PARSE_Error:您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以了解第1行“:id”附近使用的正确语法。我需要使用URL解析器吗?感谢如果这是一个MySQL错误,那么您只需要重新格式化查询字符串,而MySQL版本需要它。expressJS上下文中的查询解析器用于解析url中的查询参数。因此,如果用户调用'example.com?id=5&name=hello',查询解析器将为您解析req.query对象中的'id'和'name'。我已经安装了,新的格式是:
      connection.query('SELECT*FROM table WHERE id=?',[id],function(error,results){if(error){throw error;}else{//send JSON object to the client res.end(JSON.stringify(results));//console.log(res);}}}错误消失了,但在运行应用程序时,我在console.log(:id)中得到了一个名称,而不是值(1)。当我尝试手动访问API()时,这很有趣,我得到了数据和id(1)在日志中输入。我尝试了
      req.params.id
      ,并将查询更改为
      var queryString=“SELECT*FROM table WHERE table.id=”+id;
      我得到一个错误:ER_PARSE_Error:您的SQL语法有错误;请查看与您的MySQL服务器版本相对应的手册,以了解在第1行使用“:id”附近的正确语法。我需要使用一些URL解析器吗?谢谢如果这是一个MySQL错误,那么您只需要重新格式化您的查询字符串,而MySQ的版本我需要它。expressJS上下文中的查询解析器用于解析url中的查询参数。因此,如果用户调用'example.com?id=5&name=hello',查询解析器将在req.query对象中为您解析出'id'和'name'。我已经安装了,新的格式是:
      connection.query('SELECT*FROM table WHERE ID=?',[ID],function(error,results){if(error){throw error;}else{//send JSON object to the client res.end(JSON.stringify(results));//console.log(res);}}});
      错误消失了,但我在console.log中得到的不是值(1),而是名称(:ID)当我运行应用程序时,当我尝试手动访问API()时,我会得到数据,并在日志中输入id(1),这很有趣。