当前位置: 首页 > 知识库问答 >
问题:

来自angularjs$HTTP的Slim Framework v3 api调用

巫马炫明
2023-03-14
<?php
use Psr\Http\Message\ServerRequestInterface as Request;
use Psr\Http\Message\ResponseInterface as Response;

require 'vendor/autoload.php';
require 'app/config/configuration.php';

$app = new Slim\App(["settings" => $config]);
spl_autoload_register(function ($class_name) {
require("app/" . $class_name . ".php");
});

$app->get("/testing",function(Request $request,Response $response){
     generateResponse($response,array("message"=>"success"));
});
function generateResponse($response, $data)
{
 return $response->withStatus(200)
    ->withHeader("Content-Type", "application/json")
    ->withHeader("Access-Control-Allow-Origin", "*")
    ->withHeader("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS")
    ->withHeader("Access-Control-Allow-Headers", "Content-Type, Depth, User-Agent, X-File-Size,X-Requested-With, If-Modified-Since,X-File-Name, Cache-Control, x-hash-key, x-req-timestamp, user-language-pref, Content_Language")
    ->write(json_encode($data));
 }

 $app->run();

我已经添加了标题作为响应。但当我从$HTTP调用测试路由api时,它仍然会抛出错误。

我完全是一片空白,我知道我只是错过了一些愚蠢的东西。请帮我解决这件事。

谢谢

更新:解决方案

通过在php文件中添加header,它现在可以工作了。头('access-control-allow-origin:*');
头('access-control-allow-methods:GET,PUT,POST,DELETE,options');header('Access-Control-Allow-Headers:Content-Type,Content-Range,Content-Disposition,Content-Description');

请注意这个链接,它可能会方便一些天:-点击去->

共有1个答案

莘欣怿
2023-03-14

有一点是第14行缺少return:

return generateResponse($response,array("message"=>"success"));

您可以在浏览器的dev控制台中检查响应中是否存在标头。

从快速回顾来看,这似乎是唯一的问题。

 类似资料:
  • 问题内容: 我正在调用控制器以获取API值。如何在$ http方法之外传递数组? 我需要将数组传递给。 首先,console.log(pa)打印值[10,20,30,40]。 其次,console.log(pa)清空array []。 的JavaScript 如何在$ success回调函数之外获取数组? 问题答案: 此代码是异步的。在服务有机会从您的API调用中获取值之前分配给。 您需要使用服务

  • 事情是这样的: 我正在为我的论文创建一个完全定制的服务器。在客户端,我希望能够请求服务器处理的数据库调用。然后,它以HTTP给出响应,以JSON提供查询结果。 我现在调用的方式是:使用JQuery的“getJSON()”方法。 虚拟示例: 在浏览器中运行带有此脚本的网页会在服务器端生成以下HTTP标头: 我的问题是:为了从浏览器上javascript的“result”参数中的响应中获得JSON负载

  • 问题内容: 我正在尝试编写一个自动完成指令,该指令使用$ http请求 (不使用任何外部插件或脚本) 从服务器获取数据。当前,它仅适用于静态数据。现在,我知道我需要将我的$ http请求插入指令的中,但是我找不到关于该主题的任何好的文档。 http请求 指示 视图 那么,如何将这些正确地按Angular方式拼凑在一起? 问题答案: 我做了一个自动完成指令,并将其上传到GitHub。它还应该能够处理

  • 主要内容:读取 JSON 文件,https://www.runoob.com/try/angularjs/data/sites.php,AngularJS $http,AngularJS1.5 以上版本 - 实例,AngularJS1.5 以上版本 - 实例,AngularJS1.5 以下版本 - 实例$http 是 AngularJS 中的一个核心服务,用于读取远程服务器的数据。 使用格式: 简写方法 POST 与 GET 简写方法格式: 此外还有以下简写方法: $http.get $http

  • 我的页面在https上,但我在AJAX中调用的API url在HTTP上。我无法获得AJAX响应。混合内容:“HTTPS://localhost:8443/examples/demo.html”的页面是通过HTTPS加载的,但请求了不安全的XMLHttpRequestendpoint“http://www.earthtools.org/timezone-1.1/40.71417/-74.00639

  • 问题内容: 我有一个看起来像这样的表格: 它的设置使得输入数据后所有必填字段和“保存”按钮都可以使用。但是,部分验证是,我将使用输入的数据使用$ http通过POST通过服务器访问服务器。 我应该在函数中放置该逻辑还是有一个更好的放置位置? 更新: * 我实现了以下内容,将其作为元素上的属性应用,但它在每次我不喜欢的按键上调用服务器/数据库: 问题答案: 您不需要在指令中发出$ http请求,更好