javascript - 使用 AngularJS 向 KDB+ 进程发送 HTTP GET 请求

标签 javascript web-applications angularjs kdb

我正在使用 AngularJS 开发一个网络应用程序,但我对此还没有经验。

我的目标是让用户在文本字段中键入一些参数,然后使用该参数作为 GET 请求中的参数之一发送 GET 请求(使用 Angular 中的 $http 服务)。

请求的目标是 KDB+ 进程(KX Systems 的一种专有的面向列的数据库/语言)。此过程可以采用以下形式的请求:

http://servername:1234/?queryToRunHere[paramFromApp]

此调用应返回一个 JSON 字符串。由于网络服务器和这个进程在不同的端口上运行,我得到了“Access-Control-Allow-Origin”错误,阻止我将这个查询运行到不同的端口。我试图使用 $http.jsonp 命令(因为我读到它允许远程获取)但是这要求我提供一个“&callback”参数。这是不可能的,因为 KDB+ 将解释“?”右侧的所有内容。作为内部查询。

我不太确定如何进行,但这些是我目前的想法:

  1. KDB+ 为 Java 提供了一个 API(但据我所知还没有为 JavaScript 提供)。也许我可以用 Java 编写某种 Web 服务,然后可以通过 Angular 调用它,然后它会使用其 native API 调用 KDB+。这个问题是它创建了另一个程序来维护,而且我不确定如何编写这样的服务(什么技术、框架等)。

  2. 在 Angular 中还有另一种我不知道的方法,或者有一种方法可以不必在 $http.jsonp 中指定回调参数。

如有任何帮助,我将不胜感激。

最佳答案

您收到 Access-Control-Allow-Origin 错误,因为浏览器内置了同源策略。默认情况下,当您的 JavaScript 和服务器 API 不是来自同一 server:port 时,您会收到此错误。要解决此问题,您需要在来自服务器的 HTTP 响应 header 中指定 Access-Control-Allow-Origin

要在 KDB/Q 中完成此操作,请执行以下操作:

.z.ph:{ "\r\n" sv ("HTTP/1.1 200 OK"; "Access-Control-Allow-Origin: *"; 
"Content-Type: application/json"; ""; (.j.j select from aTable)) }

关于javascript - 使用 AngularJS 向 KDB+ 进程发送 HTTP GET 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14403467/

相关文章:

javascript - 使用 javascript 将超链接添加到表中的 <td>

javascript - 写一个函数在javascript中查找数组的最大值/最小值

javascript - TableSorter 对 Td 中的空输入进行排序

java - com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException - 字段列表中的未知列

JavaScript 模块化布局 : How to call a function defined in one module from another?

angularjs - Node Express - 身份验证 token 的存储和检索

javascript - Plone 和 AngularJS 路由

javascript - 如何在angularjs Material 设计中对齐文本

javascript - Google map 缩放级别功能

java - Maven 不编译 webapp