2013-07-04 136 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)。