2012-11-11 58 views
0

我試圖用JSON文件中的數據填充表單(onClick)。 我可以從數組中成功完成它,但是當我嘗試解析本地(與.html相同的文件夾)JSON文件時,它不起作用。從JSON文件填充表單

<script> 
var marks = []; 
$(document).ready(function() { 
    $("#RQdata").click(function(event) { 
     $.getJSON('test.json', function(data) { 
      $.each(data.markers, function(key, val) { 
       marks.push(val[key]); 


      }); 
     }); 
    }); 
}); 

function populateList() { 
    for (var i = 0; i < marks.length; i++) { 
     var mark = new Option(marks[i].name, markers[i].latlng); 
     document.getElementById('locationList').options.add(mark); 
    } 
} 
</script> 


<h2>List</h2> 
<form name="aForm"> 
    <select name="locationList" id="locationList" size="6" onChange="alert(value);" style=" width:800px;owerflow: auto;"> 
    </select> 
    <input type="button" id="RQdata" name="Request Data" value="Request Data" > 
</form> 

我test.json

{"markers": 
      [{"latlng":[55.587,17.044],"name":"Some name 1"}, 
      {"latlng":[55.577,17.044],"name":"Some name 2"}, 
      {"latlng":[55.507456,17.617585],"name":"Some name 3"}, 
      {"latlng":[55.25642,17.154904],"name":"Some name 4"}, 
      {"latlng":[55.103217,17.07776],"name":"Some name 5"}]} 

問候

+2

你能在瀏覽器的開發者工具中看到任何錯誤消息嗎?一些瀏覽器也阻止對本地文件的Ajax請求。 –

+0

檢查瀏覽器控制檯中的請求,查看狀態是否爲200以及返回的內容。閱讀API以瞭解如何添加ajax錯誤處理程序也是http://api.jquery.com/category/ajax/問題可能會像錯誤的路徑一樣簡單,但是您沒有提供太多的東西而不能正常工作 – charlietfl

回答

0

還有就是在你的代碼幾次失誤,並以下作品的版本。

var marks = []; 
$(document).ready(function() { 
$("#RQdata").click(function(event) { 
    $.getJSON('test.json', function(data) { 
    $.each(data.markers, function(key, val) { 
     marks.push(val); //It should be val instead of val[key] 
    }); 

    populateList(); // You didn't call this function here 
    }); 
}); 
}); 

function populateList() { 
for (var i = 0; i < marks.length; i++) { 
    var mark = new Option(marks[i].name, marks[i].latlng); //marks instead of markers here 
    document.getElementById('locationList').options.add(mark); 
} 
} 

請使用檢查員或其他東西進行調試。

另外,正如評論中提到的@matt,一些瀏覽器(如Chrome)將禁止XHR訪問本地文件。

+0

感謝很多! 我試過的每一段代碼都是在Chrome中完成的,也許它爲什麼不起作用。 在firefox中試過你的代碼,它工作正常! 有什麼要做的,所以它也適用於鉻? – ogward

+0

也許你應該把json放在web服務器上,而不是把它放在本地磁盤上。 – Haocheng