【发布时间】:2010-01-28 19:23:20
【问题描述】:
使用 jQuery 提交表单时出现 406 Not Acceptable 错误。我已经尝试了在网上找到的常见修复:
jQuery.ajaxSetup({
'beforeSend': function(xhr) {
xhr.setRequestHeader("Accept", "text/javascript");
}
})
这并没有解决问题。 request.format 输出文本/html。我整天都在绞尽脑汁试图解决这个问题。 Rails 2.3.4、jQuery 1.3.2 和 jQTouch。
这是我的 jquery 代码:
jQuery(function () {
$("#search").submit(function (e) {
var $form = $(this);
return app.search($form);
});
});
var app = {
search:function ($form) {
$.ajax({
type:$form.attr("method"), url:$form.attr("action"),
dataType:"script", data:$form.serialize(),
complete:function (req) {
if (req.status === 200 || req.status === 304) {
} else {
alert("There was an error searching. Try again.");
console.log(this);
}
}
});
return false;
}
};
形式:
%form{:action => "/search", :method => "post", :id => "search", "accept-charset" => "utf-8"}
%div{:style =>"margin:0;padding:0;display:inline" }
%input{:name => "_method", :type => "hidden", :value => "put"}
%input{:name => "authenticity_token", :type => "hidden", :value => "#{form_authenticity_token}"}
%ul.rounded
%li
%input{:name => 'query', :value => '', :type => 'text', :placeholder => "Search"}
控制器代码:
def show
query = params[:query]
@results = Person.search(query)
respond_to do |wants|
wants.html { }
wants.js
end
end
显示动作是被调用的动作。我已经验证过了,这是日志
Processing PeopleController#show (for 127.0.0.1 at 2010-01-28 14:12:19) [PUT]
Parameters: {"authenticity_token"=>"y4kC2CZ1dnrV7LWEC2mRxv8mP499C+0HXbRVlDEuWDc=", "query"=>"purcell"}
SQL (1.3ms) SELECT trigger_name
FROM all_triggers
WHERE owner = 'PDSADMIN'
AND trigger_name = 'PERSON_PKT'
AND table_owner = 'PDSADMIN'
AND table_name = 'PERSON'
AND status = 'ENABLED'
Person Columns (20.9ms) select column_name as name, data_type as sql_type, data_default, nullable,
decode(data_type, 'NUMBER', data_precision,
'FLOAT', data_precision,
'VARCHAR2', decode(char_used, 'C', char_length, data_length),
'CHAR', decode(char_used, 'C', char_length, data_length),
null) as limit,
decode(data_type, 'NUMBER', data_scale, null) as scale
from all_tab_columns
where owner = 'PDSADMIN'
and table_name = 'PERSON'
order by column_id
Person Load (3.7ms) SELECT * FROM person WHERE (person.person_id IN (5554,55,5966,146))
Completed in 77ms (View: 20, DB: 26) | 406 Not Acceptable [http://localhost/search]
【问题讨论】:
标签: jquery ruby-on-rails ajax