当用户按下按钮时,我需要程序使用API(JSON)中的字符串变量填充文本字段。
这是我所拥有的,但它不起作用:
<label for="weatherYVR"></label>
<input name="weatherYVR" type="text" id="weatherYVR" value="" size="45" />
<button onclick="weatherYVR">YVR Weather</button>
<script>
function weatherYVR() {
function fillText(x) {
document.getElementById("weatherYVR").value = x
}
jQuery(document).ready(function($) {
$.ajax({
url : "http://api.wunderground.com/api/XXXXXAPIKEYXXXXXX/geolookup/conditions/q/YVR.json",
dataType : "jsonp",
success : function(parsed_json) {
var location = parsed_json['location']['city'];
var weather = parsed_json['current_observation']['wind_string'];
fillText(weather)
}
});
});
}
</script>
答案 0 :(得分:2)
我在你的代码中修改了一些东西。由于你使用jQuery,我删除了一些基本的javascript并用jQuery对应的替换它。
<label for="weatherYVR"></label>
<input name="weatherYVR" type="text" id="weatherYVR" value="" size="45" />
<button onclick="weatherYVR()">YVR Weather</button>
<script>
function weatherYVR() {
jQuery.ajax({
url : "http://api.wunderground.com/api/XXXXXAPIKEYXXXXXX/geolookup/conditions/q/YVR.json",
dataType : "jsonp",
success : function(parsed_json) {
var location = parsed_json['location']['city'];
var weather = parsed_json['current_observation']['wind_string'];
jQuery('#weatherYVR').val(weather);
}
});
}
</script>
您的代码中存在一些差异,例如将jQuery标识符从$
更改为jQuery
。另外,你的功能结构有点偏。例如,行jQuery(document).ready(function($) {...});
在文档完全加载时运行,所以为什么要在函数内部执行此操作?此外,fillText()
的函数声明有点不必要,定义它的位置是非正统的如果不是不正确的javascript 编辑:它有效,但是a bit wonky as described here 即可。只需看看文档就可以了解事情。总的来说,你似乎有正确的想法。