Javascript 参数在GET请求中作为[object]发送,Rails不接受
我试图执行GET请求以返回单个“项目”,但当我将参数发送到Rails时,它们被拒绝,因为它显示为[object object],而不是Rails期望的参数 这对我来说很有用,所以我有点迷路了。我应该能够输入一个数字,它代表一个项目ID,它应该返回该项目。下面是我输入ID的index.html代码:Javascript 参数在GET请求中作为[object]发送,Rails不接受,javascript,jquery,ruby-on-rails,ruby,ajax,Javascript,Jquery,Ruby On Rails,Ruby,Ajax,我试图执行GET请求以返回单个“项目”,但当我将参数发送到Rails时,它们被拒绝,因为它显示为[object object],而不是Rails期望的参数 这对我来说很有用,所以我有点迷路了。我应该能够输入一个数字,它代表一个项目ID,它应该返回该项目。下面是我输入ID的index.html代码: <form id="getProject" class="form-group"> <div class="form-group"> <input class
<form id="getProject" class="form-group">
<div class="form-group">
<input class="form-control" type="text" name="project[id]" placeholder="get one project id">
</div>
<button type="submit" class="btn btn-default" id="get-project">get one project</button>
</form>
onGetProject获取数据并将其发送到API调用:
const onGetProject = function (event) {
event.preventDefault()
const data = getFormFields(this)
api.getProject(data)
.then(ui.getProjectSuccess)
.catch(ui.getProjectFailure)
}
API调用:
const getProject = (id) => {
event.preventDefault()
return $.ajax({
url: config.apiOrigin + '/projects/' + id,
method: 'GET',
headers: {
Authorization: 'Token token=' + store.user.token
}
})
}
这是终端中显示的内容:
Started GET "/projects/[object%20Object]" for 127.0.0.1 at 2017-06-27
22:03:35 -0400
Processing by ProjectsController#show as */*
Parameters: {"id"=>"[object Object]"}
我编写了一个脚本,该脚本应该针对单个ID执行GET请求,但它返回的是所有内容,而不是我希望Rails执行的“show”:
脚本:
API="${API_ORIGIN:-http://localhost:4741}"
URL_PATH="/projects/${ID}"
curl "${API}${URL_PATH}" \
--include \
--request GET \
--header "Content-Type: application/json" \
--header "Authorization: Token token=$TOKEN" \
--data '{
"project": {
"id": "'"${INTEGER}"'"
}
}'
我在后台使用RubyonRails,我能够成功地执行一个GET请求,该请求返回所有项目及其嵌套任务的索引,正如预期的那样。但是,我无法让单个get请求工作,并且不确定我的代码可能有什么问题
如果您需要任何其他代码或信息,请告诉我。谢谢你的帮助 由于ID是一个对象,我需要使用
ID.project.ID
更明确地访问该值
一旦我在API调用中替换了它,它就成功地执行了,并且返回了我请求的单个项目。以下是工作代码:
const getProject = (id) => {
event.preventDefault()
return $.ajax({
url: config.apiOrigin + '/projects/' + id.project.id,
method: 'GET',
headers: {
Authorization: 'Token token=' + store.user.token
}
})
}
谢谢你,帕特里克·埃文斯 由于ID是一个对象,我需要使用
ID.project.ID
更明确地访问该值
一旦我在API调用中替换了它,它就成功地执行了,并且返回了我请求的单个项目。以下是工作代码:
const getProject = (id) => {
event.preventDefault()
return $.ajax({
url: config.apiOrigin + '/projects/' + id.project.id,
method: 'GET',
headers: {
Authorization: 'Token token=' + store.user.token
}
})
}
谢谢你,帕特里克·埃文斯
id
是一个对象,您能显示JSON.stringify(id)
print的功能吗?当然!它打印:{“project”:{“id”:“2”}
您有:'/projects/'+id
,如果id
是要运行函数的对象,因为它需要是字符串才能连接它。这就是为什么您会得到[object object]
。您可能需要访问您的值,如id.project.id
,或调用getProject,如getProject(data.project.id)
,但需要了解getFormFields
是如何构建返回的数据的啊,就是这样,Patrick!我只需要在我的API调用中添加project.id
:const getProject=(id)=>{event.preventDefault()return$.ajax({url:config.apiorigen+'/projects/'+id.project.id method:'GET',headers:{Authorization:'Token Token='+store.user.Token}})
获取成功,现在开始使用手柄渲染,并确定如何显示“project”对象附带的嵌套“tasks”数组。非常感谢你的帮助,帕特里克id
是一个对象,您可以显示JSON.stringify(id)
print的功能吗?当然可以!它打印:{“project”:{“id”:“2”}
您有:'/projects/'+id
,如果id
是要运行函数的对象,因为它需要是字符串才能连接它。这就是为什么您会得到[object object]
。您可能需要访问您的值,如id.project.id
,或调用getProject,如getProject(data.project.id)
,但需要了解getFormFields
是如何构建返回的数据的啊,就是这样,Patrick!我只需要在我的API调用中添加project.id
:const getProject=(id)=>{event.preventDefault()return$.ajax({url:config.apiorigen+'/projects/'+id.project.id method:'GET',headers:{Authorization:'Token Token='+store.user.Token}})
获取成功,现在开始使用手柄渲染,并确定如何显示“project”对象附带的嵌套“tasks”数组。非常感谢你的帮助,帕特里克!!