Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/442.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
Javascript HTTP GET请求到KDB+;使用AngularJS处理_Javascript_Web Applications_Angularjs_Kdb - Fatal编程技术网

Javascript HTTP GET请求到KDB+;使用AngularJS处理

Javascript HTTP GET请求到KDB+;使用AngularJS处理,javascript,web-applications,angularjs,kdb,Javascript,Web Applications,Angularjs,Kdb,我正在使用AngularJS开发一个web应用程序,我对这个应用程序非常缺乏经验 我的目标是让用户在文本字段中键入一些参数,然后使用该参数作为GET请求中的参数之一发送GET请求(在Angular中使用$http服务) 请求的目标是KDB+进程(KX Systems提供的一种专有的面向列的数据库/语言)。此过程可以以以下形式接受请求: http://servername:1234/?queryToRunHere[paramFromApp] 此调用应返回一个JSON字符串。由于Web服务器和此进

我正在使用AngularJS开发一个web应用程序,我对这个应用程序非常缺乏经验

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

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

http://servername:1234/?queryToRunHere[paramFromApp]
此调用应返回一个JSON字符串。由于Web服务器和此进程在不同的端口上运行,因此出现了“Access Control Allow Origin”错误,该错误阻止我将此查询运行到其他端口。我尝试使用$http.jsonp命令(因为我读到它允许远程抓取),但是这要求我提供一个“&callback”参数。这是不可能的,因为KDB+会将“?”右侧的所有内容解释为内部查询

我不确定如何进行,但到目前为止,我的想法如下:

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

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


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

    该错误通常只由不同的服务器引起,为了防止跨站点脚本,通常的解决方法是在apache配置中添加头。确保引用的两个服务具有相同的主机名

    或者,如果您愿意,可以定制KDB+响应,但如果您的新用户使用q,则可能会很棘手

  • 是控制KDB处理HTTP请求的工具,您可以覆盖它来处理任何参数并返回您想要的任何内容。可以在屏幕上看到一个示例

  • KDB+3.0和更新版本还提供web套接字,您可能会发现这些套接字更有用。他们是由政府处理的

  • 在Carlos Butlers’中可以看到它在javascript中的使用示例


    希望这些为您的问题提供了解决方法。

    由于浏览器中内置了相同的源代码策略,您将遇到
    访问控制允许源代码
    错误。默认情况下,当JavaScript和服务器API不是来自同一个
    Server:port
    时,会出现此错误。要解决这个问题,您需要在服务器HTTP响应的头中指定
    访问控制允许来源

    要在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)) }
    

    谢谢你的建议!我使用Q已经有相当一段时间了,不过我承认我还没有深入研究web内容的处理函数。我将很快升级到3.0,因此第2个解决方案可能成为可能。