JQuery+Ajax:JavaScript运行时错误:需要函数
JQuery + Ajax: JavaScript runtime error: Function expected
我是新手,在互联网上找不到问题的答案。
我的asp.net网页中有以下脚本。它给了我一个错误,一个函数是期望的。
当我使用硬编码的城市名称和硬编码的div id时,它运行得很好,但从我开始使用循环动态更改1)要使用的url、2)城市名称和3)div id的那一刻起,我就收到了错误。有什么解决方案吗?提前感谢!
jQuery(document).ready(function ($) {
var strurl;
var encodedUrl;
var city;
var cities = ["firenze", "rome", "milan", "venice", "perugia", "urbino"];
for (var i = 1; i < 7; ++i) {
city = cities(i - 1);
strurl.toString = "http://api.aerisapi.com/observations/" + city + ",it?client_id=ZPYsvZLE4U9tkifhy3XMc&client_secret=IwQPYv7GA9XYR0bc9ziJ03ug5H2Tmh1gmxmAybEd";
$.ajax({
url: strurl,
dataType: "jsonp",
success: function (json) {
if (json.success == true) {
var ob = json.response.ob;
var weather = ob.weather.toLowerCase();
$('#js' + i + '1').html(city + ': ');
$('#js' + i + '2').html(weather);
$('#js' + i + '3').html(ob.tempC + '°');
}
else {
alert('An error occurred: ' + json.error.description);
}
}
});
};
});
问题就在这里:
city = cities(i - 1)
应该是:
city = cities[i - 1]
cities
变量是一个数组,因此您可以使用[]
表示法访问其元素——您的代码使用括号,这意味着JS试图将其视为函数调用。
在我看来,不是在for
条件下硬编码数组的长度,而是使用其.length
属性会更明智:
for (var i = 1; i <= cities.length; ++i) {
city = cities[i-1];
然后你将遇到的下一个问题是,你试图在$.ajax()
成功回调中使用i
,但这些$.ajax()
调用中的每一个都是异步的,所以当成功回调运行时,循环将完成,i
将为7。解决这个问题的最简单方法是使用jQuery的$.each()
方法迭代数组(而不是for循环),这样每个ajax调用都包含在自己的函数调用中,并获得自己的i
:
var cities = ["firenze", "rome", "milan", "venice", "perugia", "urbino"];
$.each(cities, function(i, city) {
var strurl.toString = "http://api.aerisapi.com/observations/" + city + ",it?client_id=ZPYsvZLE4U9tkifhy3XMc&client_secret=IwQPYv7GA9XYR0bc9ziJ03ug5H2Tmh1gmxmAybEd";
$.ajax({
url: strurl,
dataType: "jsonp",
success: function (json) {
if (json.success == true) {
var ob = json.response.ob;
var weather = ob.weather.toLowerCase();
i++;
$('#js' + i + '1').html(city + ': ');
$('#js' + i + '2').html(weather);
$('#js' + i + '3').html(ob.tempC + '°');
}
else {
alert('An error occurred: ' + json.error.description);
}
}
});
});
相关文章:
- JavaScript错误:Microsoft JScript运行时错误:应为对象
- 在函数运行时显示对话
- 当出现javascript运行时错误时会发生什么
- Javascript - 加载函数运行时未定义的变量
- Microsoft JScript运行时错误:无法获取属性'的值;样式':对象为null或未定义
- Microsoft JScript运行时错误:'Sys'未定义(在mvc3 c#剃刀中)
- JavaScript运行时错误:完成此操作所需的数据尚不可用
- 管理node.js中的运行时错误
- Windows 8应用程序正在运行,现在得到0x800a1391-JavaScript运行时错误:'WinJS&
- 如何从 MVC4 链接调用 Javascript 方法(错误 JavaScript 运行时错误:对象不支持此操作)
- JavaScript 运行时错误仅在本地计算机上
- 运行时错误:对象不支持属性或方法
- JavaScript 错误(Microsoft JScript 运行时错误:对象预期)
- Javascript 运行时错误:“应用程序未定义”
- JQuery+Ajax:JavaScript运行时错误:需要函数
- 页面引发JavaScript运行时错误:'函数名称'未定义.仅限IE10
- 0x800a138a-JavaScript运行时错误:AJAX调用中需要函数
- JavaScript运行时错误:期望函数
- 剑道网格-调用javascript函数时出错:"javascript运行时错误:'funcName
- Javascript运行时错误:函数需要ajax调用