我有一个使用 CURL 的 Rails API,但不使用 $.ajax。这是制作 API 的控制器方法:
def historic_returns
start_date = Date.new(params[:start_year].to_i, params[:start_month].to_i)
end_date = Date.new(params[:end_year].to_i, params[:end_month].to_i)
@result = ShillerDataMonth.records_between_two_dates(start_date, end_date)
respond_to do |format|
format.json { render :json => @result }
end
end
这是返回预期输出的 CURL 请求:
curl -H 'Content-type: application/json' -H 'Accept: application/json' -d '{"start_year":"2008","start_month":"1","end_year":"2008","end_month":"12"}' 'http://localhost:3000/historic_returns.json'
这是单击按钮时执行的 CoffeeScript:
$ = jQuery
$ ->
$('#return_calculator_button').click ->
$.ajax ->
url: "http://localhost:3000/historic_returns.json"
contentType: "application/json"
type: "GET"
data: {"start_year":"2008","start_month":"1","end_year":"2008","end_month":"12"}
dataType: "json"
success: (data) ->
alert("success #{data}")
error: ->
alert("failure")
当 contentType 标头包含在 $.ajax 调用中时,我收到以下错误:
GET http://localhost:3000/function%20()%20%7B%20%20%20%20%20%20%20%20return%20%…0%20%20%20%20%20%20%20%7D%20%20%20%20%20%20%20%20%7D;%20%20%20%20%20%20%7D 400 (Bad Request)
当 $.ajax 调用中不包含 contentType 标头时,我收到以下错误:
GET http://localhost:3000/function%20()%20%7B%20%20%20%20%20%20%20%20return%20%…0%20%20%20%20%20%20%20%7D%20%20%20%20%20%20%20%20%7D;%20%20%20%20%20%20%7D 404 (Not Found)
编辑:这是#return_calculator_button 的代码
<div class="control-group">
<div class="controls">
<button type="button" class="btn btn-primary" id="return_calculator_button">Calculate the Return</button>
</div>
</div>
编辑 2: Mu 是对的,我的 CoffeeScript 中有一个额外的 ->。这是正确的代码:
$ = jQuery
$ ->
$('#return_calculator_button').click ->
$.ajax
url: "http://localhost:3000/historic_returns.json"
#contentType: "application/json"
type: "GET"
data: {"start_year":"2008","start_month":"1","end_year":"2008","end_month":"12"}
dataType: "json"
success: (data) ->
alert("success #{data}")
console.log data
error: ->
alert("failure")
谢谢您的帮助。