【问题标题】:'undefined is not a function' jquery'未定义不是一个函数' jquery
【发布时间】:2014-05-29 12:53:35
【问题描述】:

使用 google appengine 我正在尝试使用函数 ajaxLoad() from here 从过时的 GDownloadUrl 重现结果。但是我收到错误消息“Uncaught TypeError: undefined is not a function”,显然是关于名为 readData 的 var 或函数(我不确定它是哪个)。

function ajaxLoad(url,callback,postData,plain) {
    var http_request = false;

    if (window.XMLHttpRequest) { // Mozilla, Safari, ...
        http_request = new XMLHttpRequest();
        if (http_request.overrideMimeType && plain) {
            http_request.overrideMimeType('text/plain');
        }
    } else if (window.ActiveXObject) { // IE
        try {
            http_request = new ActiveXObject("Msxml2.XMLHTTP");
        } catch (e) {
            try {
                http_request = new ActiveXObject("Microsoft.XMLHTTP");
            } catch (e) {}
        }
    }
    if (!http_request) {
        alert('Giving up :( Cannot create an XMLHTTP instance');
        return false;
    }
    http_request.onreadystatechange =  function() {
        if (http_request.readyState == 4) {
            if (http_request.status == 200) {
                eval(callback(http_request));
            }
            else {
                alert('Request Failed: ' + http_request.status);
            }
        }
    };
if (postData) { // POST
    http_request.open('POST', url, true);
    http_request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');  
    http_request.setRequestHeader("Content-length", postData.length);
    http_request.send(postData);
}
else {
    http_request.open('GET', url, true);
    http_request.send(null);
}

}

我使用 ajaxLoad 读取现有数据的调用如下。

ajaxLoad("details.txt?place={{place}}",readData);

readData 定义如下。

  // === Define the function thats going to read the stored data ===
  readData = function(doc) {
    // === split the document into lines ===
    lines = doc.split("\n");
    for (var i=0; i<lines.length; i++) {
      if (lines[i].length > 1) {
        // === split each line into parts separated by Tab and use the contents ===
        parts = lines[i].split(String.fromCharCode(9));
        var ID  = parts[0];
        var lat = parseFloat(parts[2]);
        var lng = parseFloat(parts[3]);
        var details = parts[4];
        var pincategory = parts[5];
        var label = parts[6];
        var point = new google.maps.LatLng(lat,lng);
        var pinage = parts[7];
        myArray[i] = new Array(lat,lng,details,point,ID,pincategory,label,pinage);
      }
    }
    // create the marker
    for (var j=0; j<myArray.length; j++) {
      var alat = myArray[j][0];
      var alng = myArray[j][1];
      var adetails = myArray[j][2];
      var apoint = myArray[j][3];
      var ID = myArray[j][4];
      var acolor = colors[myArray[j][5]];
      var alabel = myArray[j][6];
      var apinage = myArray[j][7];
      if(!isNaN(alat+alng)){
        var marker = createMarker(apoint,adetails,ID,acolor,alabel,apinage);
      }
    }
  }

我的python数据类定义如下。

class Pin(db.Model):
    date = db.DateTimeProperty(auto_now_add=True)
    lat = db.FloatProperty()
    lng = db.FloatProperty()
    name = db.StringProperty()
    cornerColor  = db.StringProperty(default='ffffff')
    height = db.IntegerProperty(default=32)
    label = db.StringProperty(default='')
    labelColor = db.StringProperty(default='000000')
    labelSize = db.IntegerProperty(default=2)
    primaryColor = db.StringProperty(default='ff0000')
    shadowColor = db.StringProperty(default='000000')
    shape = db.StringProperty(default='circle')
    strokeColor = db.StringProperty(default='000000')
    width = db.IntegerProperty(default=32)
    category = db.IntegerProperty(default=0)
    scategory = db.StringProperty()
    logindex = db.IntegerProperty(default=0)
    imageindex = db.IntegerProperty(default=0)
    deleteRequested = db.BooleanProperty(default=False)

如果需要更多信息,请询问。

请问如何读取数据?

【问题讨论】:

  • 为什么不使用 jQuery 进行 AJAX?
  • 你给了我们大量的代码,却没有准确地告诉我们错误在哪一行;并且您在不使用任何内容的情况下标记并命名问题“jquery”。我对您希望我们如何帮助您感到困惑。
  • 我不懂 javascript 的语言,所以我试图给出例子而不是使用我已经忽略的词汇。 @dfsq,我不知道我是否在使用 AJAX,甚至不知道如何使用;我的经验仅限于 google appengine 中的 python 和最小的 javascript。 @Blazemonger,当我调用ajaxLoad() 时出现错误。更具体地说,错误似乎出现在ajaxLoad()http_request.onreadystatechange 中。谢谢。

标签: jquery python


【解决方案1】:

我无法使函数ajaxLoad() 在我的应用程序中工作。但是 by reading Pamela Fox's posts 我改用 downloadUrl() 。关键的新代码如下。

<script type="text/javascript" src="util.js"></script>

在下面的命令中,回调函数readData 与问题保持不变。

downloadUrl("details.txt?place={{place}}",readData); 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-16
    • 2015-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-19
    相关资源
    最近更新 更多