警告:文字墙
我正在使用jQuery.csv插件将csv加载到数组中。它工作得很好,直到最近。我不知道是否有任何改变,但它没有工作,它在控制台中显示以下错误:
Uncaught TypeError: Object function (a,b){return new c.fn.init(a,b)} has no method 'csv'
我使用插件文档中描述的方法调用它(与之前相同):
jQuery.get(csvfile, function(data) { array = jQuery.csv()(data); });
插件文件本身很短:
/* Usage:
* jQuery.csv()(csvtext) returns an array of arrays representing the CSV text.
* jQuery.csv("\t")(tsvtext) uses Tab as a delimiter (comma is the default)
* jQuery.csv("\t", "'")(tsvtext) uses a single quote as the quote character instead of double quotes
* jQuery.csv("\t", "'\"")(tsvtext) uses single & double quotes as the quote character
*/
;
jQuery.extend({
csv: function(delim, quote, linedelim) {
delim = typeof delim == "string" ? new RegExp( "[" + (delim || "," ) + "]" ) : typeof delim == "undefined" ? "," : delim;
quote = typeof quote == "string" ? new RegExp("^[" + (quote || '"' ) + "]" ) : typeof quote == "undefined" ? '"' : quote;
lined = typeof lined == "string" ? new RegExp( "[" + (lined || "\r\n") + "]+") : typeof lined == "undefined" ? "\r\n" : lined;
function splitline (v) {
// Split the line using the delimitor
var arr = v.split(delim),
out = [], q;
for (var i=0, l=arr.length; i<l; i++) {
if (q = arr[i].match(quote)) {
for (j=i; j<l; j++) {
if (arr[j].charAt(arr[j].length-1) == q[0]) { break; }
}
var s = arr.slice(i,j+1).join(delim);
out.push(s.substr(1,s.length-2));
i = j;
}
else { out.push(arr[i]); }
}
return out;
}
return function(text) {
var lines = text.split(lined);
for (var i=0, l=lines.length; i<l; i++) {
lines[i] = splitline(lines[i]);
}
return lines;
};
}
});
我正在使用jQuery.noConflict():
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js"></script>
<script type="text/javascript">
jQuery.noConflict();
</script>
<script type="text/javascript" src="<?php echo $path ?>/js/jquery.csv.js"></script>
<script type="text/Javascript" src="<?php echo $path ?>/js/script.js"></script>
我可以收集的是该插件正在尝试使用.extend来添加功能&#39; csv&#39;到jQuery对象,它不起作用。有没有人见过/解决过这个问题?我也假设最近有一个更改为1.5.1,但改为1.5.2并没有改变任何东西。
提前感谢。
答案 0 :(得分:3)
使用jQuery 1.5.1在JSFiddle上正常工作。
确保您的语句包含在“onload”块中。
jQuery(document).ready(function() {
...
...
jQuery.get(csvfile, function(data) { array = jQuery.csv()(data); });
});
另外,我发现您使用PHP来引用CSV插件文件的路径。确保PHP的路径输出仍然有效。