0

我是网络编程的新手,并且已经连续几个小时把头撞在墙上。

我尝试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>
4

2 回答 2

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对全局变量和函数参数使用相同的名称( )。

于 2013-07-04T21:18:25.070 回答
0

那么根据这个jsFiddle: http: //jsfiddle.net/HFKnC/它的工作原理!但是您正在使用 GET 请求,而 api 需要 POST 请求。所以拿

$.post();

代替

$.getJSON();
于 2013-07-04T21:05:25.277 回答