gpt4 book ai didi

javascript - CakePhp:使用 CakePHP HttpClient 调用 API 时,响应正文中出现错误

转载 作者:行者123 更新时间:2023-12-01 02:04:01 24 4
gpt4 key购买 nike

我的 API 响应中有一些 HTML 文本。

我收到的回复

enter image description here

预览的响应

enter image description here

这是我的代码(PHP):

    public function getBeatmapInformations() {
$this->render(false);
if($this->request->is('get')){
$url = $_GET['beatmapUrl'];
$isOsuUrlBeatmap = "#^(?:https://)?osu\.ppy\.sh/(?:b|beatmapsets)/(\d*)#";
if(preg_match($isOsuUrlBeatmap, $url, $matches)){
$OSU_API_KEY = "MY_API_KEY";
$httpClient = new Client();
$response = $httpClient->get('https://osu.ppy.sh/api/get_beatmaps', [
's' => intval($matches[1]),
'k' => $OSU_API_KEY
]
);
$result = $response->body();
if(!empty($result)){
echo $result;
}
}
}
}

Javascript 端(AJAX 请求):

function launchAjaxRequest(beatMapUrl) {
let url = beatMapUrl.replace(/['"]+/g, '');
$.get({
type : "GET",
url: '/ofv/getBeatmapInformations',
data: {
beatmapUrl : url,
},
success: function(data){
fillModesAvailablesForBeatmap(data);
}
});}

最佳答案

您不应该在 CakePHP 中手动回显 Controller 操作中的任何内容。 CakePHP 中实现 json 输出的方法是使用 Data Views 和 Request Handler:

1.在 Controller 的initialize()方法中启用请求处理程序:

public function initialize(){
$this->loadComponent("RequestHandler");
}

2.在您的操作中,设置要序列化的数据:

$result = $response->body();
$this->set(compact("result"));
$this->set("_serialize", "result");

有关请求处理程序和数据 View 的更多信息可以在文档中找到:JSON and XML views

正如有人可能会指出的那样,您在这里还有一个替代方案:您可以在使用 die() 回显数据后立即停止脚本的执行。但这不是 Cake 处理这个问题的方式。

关于javascript - CakePhp:使用 CakePHP HttpClient 调用 API 时,响应正文中出现错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50267079/

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