2013-07-04 90 views
0

我是网络编程的新手,几个小时一直在困扰着我的脑袋。为什么不能使用JSON工作?

我试过在setCityName()函数中放入一个var city = document.getElementById("cityname").value;,并简单地使用它,但不幸的是,即使我在文本框中传递了某些东西,该城市也会给我“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

当您尝试代码时会得到什么错误? “一般的网络编程”。它太宽泛了,你没有描述你的问题。你想用这个具体问题来达到什么目的? –

+0

嗨维克多;简而言之,我试图在由输入HTML标记形成的文本框中输入城市名称中的用户类型。从那里,用户点击提交框,并调用Javascript函数调用JSON Web服务来查找输入城市的邮政编码。在很长一段时间里,我的问题是每当我添加setCityName函数的“getJSON”部分时,就会遇到很多麻烦。我的空间不足,但我开始认为它可能是我特定的浏览器或设置;我在Ubuntu上,它似乎在我的Windows安装程序上正常工作。我会继续黑客攻击它。 –

+0

“我遇到了很多麻烦”还不够具体,但如果您在运行代码时遇到问题,请尝试查看Racso给出的答案。 “我的空间用完了”绝对听起来不像代码。听起来很奇怪,来自json请求。 –

回答

0

那么根据这个jsFiddle:http://jsfiddle.net/HFKnC/它的工作原理!但是你正在使用GET请求,并且api需要POST请求。因此,采取的

$.post(); 

代替

$.getJSON(); 
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)。