Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 返回ajax响应,但有时不返回';不要触发任何操作或警报_Jquery_Ruby On Rails_Ajax - Fatal编程技术网

Jquery 返回ajax响应,但有时不返回';不要触发任何操作或警报

Jquery 返回ajax响应,但有时不返回';不要触发任何操作或警报,jquery,ruby-on-rails,ajax,Jquery,Ruby On Rails,Ajax,我有一个相当标准的ajax请求,响应作为数组返回。 它90%的时间都能正常工作 不幸的是,有10%的时间,请求被发送,响应被返回,但没有显示,我甚至不能输出到警报 Firebug在响应中没有显示错误。我可以在另一个窗口中打开响应,这很好。我已经查看了响应,没有看到任何明显的编码错误。尽管像圣保罗教堂这样的东西被认为是 st.paul\x92S. 圣保罗。 正在从csv文件检索返回的数据,该文件已从excel文件转换为csv 对于相同的请求,它总是失败。因此,90%的请求都能顺利通过,10%的请求

我有一个相当标准的ajax请求,响应作为数组返回。 它90%的时间都能正常工作

不幸的是,有10%的时间,请求被发送,响应被返回,但没有显示,我甚至不能输出到警报

Firebug在响应中没有显示错误。我可以在另一个窗口中打开响应,这很好。我已经查看了响应,没有看到任何明显的编码错误。尽管像圣保罗教堂这样的东西被认为是 st.paul\x92S. 圣保罗。 正在从csv文件检索返回的数据,该文件已从excel文件转换为csv

对于相同的请求,它总是失败。因此,90%的请求都能顺利通过,10%的请求不会出错,但10%的请求总是一样的

我使用的是rails,输出由

render ({:content_type => :js, :text => @col_data.uniq}) 呈现({:content\u type=>:js,:text=>@col\u data.uniq}) 我这样得到csv,去掉前导和尾随空格。也许我应该把其他字符去掉或编码

def csv_data csv=Dataset.find(session[:dataset_id]) @csv_data = CSV.read(csv.dataset.path) @csv_data = @csv_data.each{|row| row.each {|col|col.to_s.strip!}} return @csv_data end def csv_数据 csv=Dataset.find(会话[:Dataset\u id]) @csv\u data=csv.read(csv.dataset.path) @csv|u data=@csv|u data.each{| row | row.each{| col | col.to_.strip!} 返回@csv_数据 结束 我会在这里包含输出,但它是一个长数组,我已经在其中查找nil,或字符编码,但存在的编码肯定是转义的

这个问题最初是作为ajax响应大小错误发布的,因为这是我看到的有效和无效之间的明显区别,但是最初的评论让我相信大小不是问题,因为大型响应小于45kb

jQueryAjax代码非常简单。我尝试了使用数据类型:“json”和不设置数据类型。 返回数据时会触发“警报”,但是,在这些未返回数据的情况下,不会触发警报。然而,我可以在firebug中看到输出,因此它们是非错误响应

var selected_field=jQuery('option:selected',this).text(); jQuery.ajax({ url: 'selectfilter', data: 'column_name='+selected_field, dataType: 'json', success: function(data){ alert(data.toSource()); if(data.length==0){ alert('the selected column has no data'); } var list=''; for (var i=0;i'+data[i]+''; } jQuery('table#sample_data').html(list).data('list',data); } }) var selected_field=jQuery('option:selected',this).text(); jQuery.ajax({ url:'selectfilter', 数据:“列名称=”+选定的字段, 数据类型:“json”, 成功:功能(数据){ 警报(data.toSource()); if(data.length==0){ 警报(“所选列没有数据”); } var列表=“”; 对于(VarI=0;i'+数据[i]+''; } jQuery('table#sample_data').html(list).data('list',data); } })
您提到同样的10%的数据导致了这个问题。您注意到这些条目中有任何模式吗?您有权访问数据吗?您是否创建了数据

在我的工作中,我多次将一个字段更新的客户数据库从Excel导出到CSV,JavaScript中有大量额外的字符会出错。
st.paul\x92S。
看起来像是一个主要的候选,因为排字员单引号的\x92是unicode,或者是HTML


我建议尝试通过更改或删除“智能引号”来清理数据。此外,查看字段中是否有其他额外字符。在Excel中几乎不可能注意到的一个特别恼人的字符是回车符(或新行)字符。在文本编辑器中查看数据可能会有很大帮助。

您是否尝试过在控制器中以不同的方式呈现数据,例如使用“render:json=>@col_data.uniq”?

我认为ajax响应上的40kb不会达到最大值。我认为您的问题出在其他地方。是什么让您认为它有文件大小限制?您看到了什么样的影响?请求是否中断?必须使用40kb大小不是问题-我有经常超过5MB大小的ajax响应(然后浏览器超时问题确实会成为一个问题-通常通过将请求的函数推迟到生成,然后使用客户端javascript调用来检查临时文件是否已完成写入来解决这些问题)。您是否尝试在Ajax调用中使用“error”属性?是否可以指定您的jquery版本?您是否尝试在控制器中以不同的方式呈现数据,例如使用“render:json=>@col_data.uniq”?谢谢Chris,我怀疑这是一个编码错误,但没有注意到输出中会导致完全崩溃的任何内容(正如我提到的,输出非常大。但是,我没有访问csv的权限,它们是由用户上传的,因此我不能期望它们在上传之前“清理”数据。它们是正则表达式还是我可以在导入时针对csv运行的某个东西来清理会导致此中断的字符?这绝对令人惊讶g这很简单,与我调试的任何方向都毫无关系。希望这能帮某人省下我花了很多很多时间试图弄明白它。嗨@pedalpete,我对stackoverflow声誉系统非常陌生,对帮助比获得分数更感兴趣,但我如何为我的答案赢得奖金?很抱歉,我想当我接受一个答案时,它会自动给你分数。我自己对赏金这件事还不熟悉。