为什么这个getJSON不起作用?

时间:2013-07-04 20:59:24

标签: html json syntax

我是网络编程的新手,几个小时以来一直抨击我的头。

我已经尝试将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>

2 个答案:

答案 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");
    });
}

Check it out live here

建议:不要对全局变量和函数参数使用相同的名称(a)。

答案 1 :(得分:0)

根据这个jsFiddle:http://jsfiddle.net/HFKnC/它的确有效!但你正在使用GET请求而api想要一个POST请求。所以拿

$.post();

而不是

$.getJSON();