gpt4 book ai didi

javascript - 无法从angularjs中的rails api访问数据

转载 作者:行者123 更新时间:2023-12-03 06:57:32 25 4
gpt4 key购买 nike

我正在尝试使用rails-api gem 创建一个简单的todo api,对于前端我使用AngularJS。当我从浏览器向 Rails 服务器发送 get 请求时,它会给出适当的 JSON 响应(例如 http://localhost:3000/tasks ),但是当我尝试使用 $http.get( http://localhost:3000/tasks) 它会进入失败处理函数而不是成功。我该怎么办?

这是我的代码

任务 Controller

class TasksController < ApplicationController
before_action :set_task, only: [:show, :update, :destroy]

# GET /tasks
# GET /tasks.json
def index
@tasks = Task.all

render json: @tasks
end

# GET /tasks/1
# GET /tasks/1.json
def show
render json: @task
end

# POST /tasks
# POST /tasks.json
def create
@task = Task.new(task_params)

if @task.save
render json: @task, status: :created, location: @task
else
render json: @task.errors, status: :unprocessable_entity
end
end

# PATCH/PUT /tasks/1
# PATCH/PUT /tasks/1.json
def update
@task = Task.find(params[:id])

if @task.update(task_params)
head :no_content
else
render json: @task.errors, status: :unprocessable_entity
end
end

# DELETE /tasks/1
# DELETE /tasks/1.json
def destroy
@task.destroy

head :no_content
end

private

def set_task
@task = Task.find(params[:id])
end

def task_params
params.require(:task).permit(:title, :completed, :order)
end
end

Angular 代码

angular
.module('app', [])
.controller('MainCtrl', [
'$scope',
'$http',
function($scope,$http){
$scope.test = 'Hello world!';

$http.get('http://localhost:3000/tasks').then(function(response){
$scope.tasks = response.data;
},function(response){
alert('error');
})
}]);

HTML

<body ng-app="app" ng-controller="MainCtrl">
<div>
{{test}}
</div>
<ul>
<li ng-repeat="task in tasks">{{task.title}}</li>
</ul>
</body>

当我访问 HTML 页面时,它显示错误作为警报

最佳答案

这听起来像是一个CORS问题。您的 Web 服务支持 CORS 吗?如果没有,您可以使用类似 rack cors 的工具.

关于javascript - 无法从angularjs中的rails api访问数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37210694/

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