【问题标题】:$.ajax is not a function$.ajax 不是函数
【发布时间】:2013-01-09 20:05:46
【问题描述】:

您好,我正在尝试使用Wunderground Weather API,但在请求单击按钮时的信息时遇到了麻烦。 这是提供的工作开场白:

jQuery(document).ready(function($) {

这是我将其更改为:

jQuery('#GetWeather').click(function($) {

当我点击按钮时,我得到一个萤火虫错误:

TypeError: $.ajax is not a function
[Break On This Error]   

success : function(parsed_json) {

我不知道为什么它不起作用,但这是其余的代码......希望它有所帮助:

jQuery('#GetWeather').click(function($) {
var PostCode="PL9 9UT";
$.ajax({ url : "http://api.wunderground.com/api/2508132ae0c7601a/geolookup/conditions/q/UK/"+PostCode +".json",
dataType : "jsonp",
success : function(parsed_json) {

var icon = parsed_json['current_observation']['icon'];
var temp_c = parsed_json['current_observation']['temp_c'];
var feelslike_c = parsed_json['current_observation']['feelslike_c'];
var visibility_mi = parsed_json['current_observation']['visibility_mi'];
var UV = parsed_json['current_observation']['UV'];
var relative_humidity = parsed_json['current_observation']['relative_humidity'];
var wind_mph = parsed_json['current_observation']['wind_mph'];
var pressure_mb = parsed_json['current_observation']['pressure_mb'];
var wind_string = parsed_json['current_observation']['wind_string'];
var weather = parsed_json['current_observation']['weather'];

var imageurl = "http://192.168.0.4/DesktopVersion/Inc/Images/Weather/";

$('.Wicon').css('background-image',"url("+imageurl +icon +".svg)");
$('#GetWeatherTemp').html(temp_c +"&#176");
$('#GetWeatherFeel').html("Feels Like " +feelslike_c +"&#8451");
$('#GetWeatherVis').html(visibility_mi +" Miles");
$('#GetWeatherUv').html(UV);
$('#GetWeatherHumid').html(relative_humidity +"%");
$('#GetWeatherWind').html("Wind Speed " +wind_mph +"Mph");
$('#GetWeatherPress').html(pressure_mb);
$('#GetWeatherState').html(weather);
}
});
});

【问题讨论】:

  • 你不能只用 ready 替换 click 并期望它们以相同的方式工作......一个是事件,另一个是 jQuery 方法。
  • 请注意,链接页面中的代码根本不使用代码包装中的 $。

标签: jquery ajax api typeerror


【解决方案1】:

click 事件不发送 jQuery 对象作为参数,它发送event 对象,所以函数内部的$ 不会是 jQuery 对象,而是event 对象点击事件。

只需删除 $ 参数,使其不会影响全局 $ 标识符:

jQuery('#GetWeather').click(function() {

【讨论】:

  • 很好的答案,实际上告诉我该做什么,而不仅仅是什么问题 :) 谢谢!
【解决方案2】:

这一行是你的问题:

jQuery('#GetWeather').click(function($) {

document.ready 处理程序中,jQuery 被传入,以便您可以方便地将其别名为$ 以实现兼容性。但是,对于 click 处理程序,第一个参数是一个事件对象,这意味着您将使用事件引用覆盖 jQuery 简写 ($)。

【讨论】:

  • 谢谢大家,我对编码有点小白,所以非常感谢您的帮助:)
猜你喜欢
  • 1970-01-01
  • 2020-10-15
  • 2013-08-18
  • 2023-04-07
  • 2018-02-10
  • 2020-05-01
相关资源
最近更新 更多