jQuery.csv()插件未知错误

时间:2011-04-19 20:32:27

标签: javascript jquery

警告:文字墙

我正在使用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并没有改变任何东西。

提前感谢。

1 个答案:

答案 0 :(得分:3)

使用jQuery 1.5.1在JSFiddle上正常工作。

确保您的语句包含在“onload”块中。

jQuery(document).ready(function() {
     ...
     ...
     jQuery.get(csvfile, function(data) { array = jQuery.csv()(data); });
});

另外,我发现您使用PHP来引用CSV插件文件的路径。确保PHP的路径输出仍然有效。