我是网络编程的新手,几个小时以来一直抨击我的头。
我已经尝试将var city = document.getElementById("cityname").value;
置于setCityName()函数内部,并且只是使用了它,但遗憾的是,即使我在文本框中传递了某些内容,也会让我为城市“null”。
我希望有人可以看到我的错误,并教我一些关于getJSON和网络编程的一般知识。谢谢!
<!DOCTYPE html>
<html>
<head>
<style>img{ height: 100px; float: left; }</style>
</head>
<body>
<form>
City name: <input type="text" id="cityname" name="city" value=""><br />
Latitude: <input type="text" id="latitude" name="lat" value=""><br />
<input id="Subb" type="submit" value="Submit" onclick="ttest()">
</form>
<script>
var a;
function ttest()
{
a = document.getElementById("cityname").value;
setCityName(a);
}
function setCityName(a)
{
var cityURL = "http://api.geonames.org/postalCodeSearchJSON?placename="+a+"&maxRows=10&username=demo";
$.getJSON( cityURL, function(data) {alert("Hi");})
.success(function() {alert("testSuccess");})
.fail(function() {alert("testFail");});
}
</script>
</body>
</html>
答案 0 :(得分:1)
我已经测试了你的代码(进行了一些微小的改动,以使它在jsFiddle中工作)并且它可以正常工作。
使用Javascript:
var a;
function ttest() {
a = document.getElementById("cityname").value;
setCityName(a);
}
function setCityName(a) {
var cityURL = "http://api.geonames.org/postalCodeSearchJSON?placename=" + a + "&maxRows=10&username=demo";
console.log(cityURL);
var city = document.getElementById("cityname").value;
console.log(city);
$.getJSON(cityURL, function (data) {
console.log("Hi");
})
.success(function (data) {
console.log("testSuccess");
console.log(data)
})
.fail(function () {
console.log("testFail");
});
}
建议:不要对全局变量和函数参数使用相同的名称(a
)。
答案 1 :(得分:0)
根据这个jsFiddle:http://jsfiddle.net/HFKnC/它的确有效!但你正在使用GET请求而api想要一个POST请求。所以拿
$.post();
而不是
$.getJSON();