gpt4 book ai didi

javascript - 来自 php Controller 的 React SPA API 端点打开一个空白的 SPA 页面

转载 作者:行者123 更新时间:2023-11-30 06:13:45 33 4
gpt4 key购买 nike

我设置了一个单页应用程序,它使用 Controller (用 PHP 编写)从 API 获取数据。到目前为止,我没有遇到任何问题,数据填充表,在选择表元素时它会使用新的 url 和部分数据(主要是 ID)重新呈现,但在尝试获取用户/{id} 数据时会抛出错误。在使用 localhost 测试类似链接时....../api/company/user 它将数据显示为 json,但是 localhost 的这个特定链接....../api/company/user/{UserIDHere} 只是重新呈现顶部有菜单和正文的页面是完全空白的。我完全不知道可能是什么问题。

到目前为止,我已确保 API GET 链接与路由不同。目前链接如下..

/company
/company/users
/company/users/123

GET 请求完成/公司/用户和/company/user/123 注意用户缺少的 S

理论上它不应该产生任何问题,尤其是在向以下对象发出获取请求时:

/company/user - 获取所有具有关联 ID 等的用户但是/company/user/{userID} 提供了一个错误,指出有一个意外的标记 <(因为它生成 HTML 而不是 Json)

我已经使用 postman 测试了 API 端点,它运行良好,为两个请求获取所有数据。代码如下:

这是使用 postman ,获取“/company/user”..:

{"status":"OK","result":{"total":3},"data":[{"id":118,"firstName":"Test123","lastName":"Driver 2","fullName":"Test123 Driver 2","email":"driver2@abc.com","type":"emp","typeName":"Employee","role":"driv","roleName":"Driver","birthDate":null},{"id":139,"firstName":"dsghsdhsd12511","lastName":"sagsdh","fullName":"dsghsdhsd12511 sagsdh","email":"asgsagas@fsaf.sf","type":"con","typeName":"Contractor","role":"acco","roleName":"Accountant","birthDate":null},{"id":122,"firstName":"123321424","lastName":"Driver 3","fullName":"123321424 Driver 3","email":"test@fsafs.sf","type":"emp","typeName":"Employee","role":"driv","roleName":"Driver","birthDate":null}]}

这是使用 Postman 获取“公司/用户/118”

  {"status":"OK","data":{"id":118,"firstName":"Test123","lastName":"Driver 2","fullName":"Test123 Driver 2","email":"driver2@abc.com","type":"emp","typeName":"Employee","role":"driv","roleName":"Driver","birthDate":null,"ssn":null,"documents":[],"access":{"accounting":true,"company":false,"dispatch":false,"equipment":false,"safety":false},"accountId":null}}

这是我用来在 React 代码中获取数据的请求

getUsers() {
Api.get(this.controller, "/company/user", data => {
this.setState({ users: data });
console.log(this.state.users);
});
}

getUser(id) {
if (id) {
Api.get1(this.controller, "/company/user/" + id, data => this.setState({ user: data }));
}
}

获取用户效果很好。获取用户根本没有。

其他地方的链接都指向/company/users或在选定表格元素的情况下

 <Route exact path={"/company/users"} component={() => <UserControlPage/>} />
<Route path={"/company/users/:id"} component={UserControlPage} />

这是被调用的 CompanyController 函数:

$app->get('/' . API . '/' . self::NAME . "/user", function (Request $request, Response $response) use ($c) {
return Api::get($c->con['api'], $c->log, $request, $response, "/" . self::NAME . "/user", $c->con['session']);
});

$app->get(API . '/' . self::NAME . "/user/{id}", function (Request $request, Response $response, $pp) use ($c) {
return Api::get($c->con['api'], $c->log, $request, $response, "/" . self::NAME . "/user/" . Api::pathParameter($pp, 'id'), $c->con['session']);
});

我希望在选择表格中的一个元素后,它会重新呈现页面,选择 ID,让所有用户在左侧生成一个列表(这部分有效),然后只会为 body 的其余部分,但是对于后来我得到一个成功的请求(对于所有用户)和第二个产生错误消息:

ERROR: SyntaxError: Unexpected token < in JSON at position 0

如果格式错误/您需要特定的文件或信息,请告诉我,过去 3 天我一直在解决这个问题,但我无法解决。

最佳答案

好吧,经过多年对可能出现的错误进行虹吸之后,它仍然让我相信它很可能是 Controller 的问题......注意细节是我的问题..

事实证明,唯一缺少的是一个“/”

基本上转动这个:

$app->get(API . '/' . self::NAME . "/user/{id}", function (Request $request, Response $response, $pp) use ($c) {
return Api::get($c->con['api'], $c->log, $request, $response, "/" . self::NAME . "/user/" . Api::pathParameter($pp, 'id'), $c->con['session']);
});

进入这个:

$app->get('/' . API . '/' . self::NAME . "/user/{id}", function (Request $request, Response $response, $pp) use ($c) {
return Api::get($c->con['api'], $c->log, $request, $response, "/" . self::NAME . "/user/" . Api::pathParameter($pp, 'id'), $c->con['session']);
});

解决了这个问题。是的,它只是在 API 之前一直缺少一个 /(一个正斜杠)。

是的,我确实修复了其余的 Controller ,因为我似乎复制了一个错误,因此我把它们都搞砸了。

感谢所有检查问题的人!!

关于javascript - 来自 php Controller 的 React SPA API 端点打开一个空白的 SPA 页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57363340/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com