我在jQuery中有我的表单代码:
$('form.ajax_form').on('submit', function(){
event.preventDefault();
var form_errors_space = $(this).find('.ajax_form_errors:first');
$.ajax({
type: "POST",
dataType: 'script',
url: $(this).attr('action'),
data: $(this).serialize(),
// show success response from server.
success: function(data, status, jqXHR) {
console.log(data);
console.log(status);
console.log(jqXHR);
},
// show error response from the server.
error: function(data, status, error_message) {
// error handeling here
}
});
});
代码适用于chrome和safari。问题出在Firefox上,它将AJAX请求发送为' HTML'数据类型而不是JS /脚本。任何的想法?
注意:我在Ruby on Rails 4,Ruby 2.1.1上执行此操作,出于项目特定原因,我无法使用默认remote: true
选项。
Firefox版本:30.0
**更新:**我也试图覆盖内容类型和MIME类型,但它也没有工作。
...
data: $(this).serialize(),
contentType: 'application/javascript',
accepts: 'text/script',
beforeSend: function( xhr ) {
xhr.overrideMimeType( "application/script; charset=x-user-defined" );
},
.....
答案 0 :(得分:2)
将您的代码更改为如下所示:
$('form.ajax_form').on('submit', function(e){
e.preventDefault();
而不是:
$('form.ajax_form').on('submit', function(){
event.preventDefault();
答案 1 :(得分:1)
尝试使用' text'而不是脚本:
$('form.ajax_form').on('submit', function(){
event.preventDefault();
var form_errors_space = $(this).find('.ajax_form_errors:first');
$.ajax({
type: "POST",
dataType: 'text',
url: $(this).attr('action'),
data: $(this).serialize(),
// show success response from server.
success: function(data, status, jqXHR) {
console.log(data);
console.log(status);
console.log(jqXHR);
},
// show error response from the server.
error: function(data, status, error_message) {
// error handeling here
}
});
});