我正在用angular写一个post方法来发布一些数据,这些数据我将在Codeigniter中返回JSON。
这是服务:
public userlogin(data) {
let uploadURL = `myurl`;
const requestOptions: Object = {
responseType: 'json'
}
return this.http.post<any>(uploadURL, data,requestOptions).pipe(map((responce) => {
console.log(responce);
return responce;
})
);
}
在我的组件中:
this.services.postuser(formData).subscribe(
(data) => {
console.log(data);
}
);
我经历了很多堆栈溢出问题和答案,但是该解决方案不适用于我。 我还将post方法的响应方式从JSON更改为文本,并将post方法中的响应类型更改为仍然收到相同错误的文本。
发布的后端功能:
public function user_login()
{
if(is_array($_POST) && sizeof($_POST) >0){
$where_array = array(
'username'=>$this->input->post('username'),
'password'=>$this->input->post('password')
);
$result = $this->Admin_model->checkuser($where_array);
// print_r($result); die;
if($result == "user not found" || $result == "incorrect password")
{
$json_data = array("Code"=>"1","data"=>$result);
echo json_encode($json_data, JSON_UNESCAPED_SLASHES);
}else{
$json_data = array("Code"=>"0","data" => "Login successfull");
echo json_encode($json_data, JSON_UNESCAPED_SLASHES);
}
}
}
答案 0 :(得分:0)
以我的个人经验,使用过asp.net核心后端(sql数据库)和NodeJS Express后端(mongoDB)
内部Angular前端:
在我的返回Observable的服务中 只需返回发帖请求,就像这样:return this.http.post(url, data, options);
使用该服务的组件中将如下所示:
this.service.postMethod(data).subscribe((res)=>{}, (err)=>{});
答案 1 :(得分:0)
由我自己解决:
我发现问题与发送的请求或响应无关。 实际上,这是一个cors错误,因为服务器未设置为接受跨域请求。
首先,我安装了this Firefox扩展程序以测试问题,然后得到响应。
所以经过测试,在我的ci文件中,我将原点设置为'*'以允许所有原点。
header("Access-Control-Allow-Origin: *");
答案 2 :(得分:0)
还要设置内容类型json,以确保不会抛出任何其他错误。
将以下代码放在php文件顶部:
header('Access-Control-Allow-Origin: *');
header('Content-Type: application/json');
有关此answer.
的信息,