クライアントが提供している、適切にフォーマットされたjson(jsonlint.comを使用して検証済み)を提供する外部Webアプリからのかなり単純なデータ(JQUERYを使用)を表示する必要があるシナリオがあります。jsonを使用するのはこれが初めてで、dataTypejsonpとLIVEurlを使用すると、JSONデータのname:valueペアの先頭の最初の引用で「無効なラベル」エラーが発生します...しかし、それをコピーすると同じjsonをローカルに保存し、jsonpをjsonだけに変更します。これは機能し、DOMで任意の方法でデータを操作し、Imの後に行うことを実行できます。
ライブURLjsonを機能させるには何をする必要がありますか?
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<title>JSON Test</title>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js" type="text/javascript"></script>
<script>
$.ajax({
type : 'GET',
//url : 'jsondata2.js',
url: 'http://.....' //MY LIVE URL HERE. NOTE, THE LOCAL FILE ABOVE THAT DOES WORK (JSON NOT JSONP) IS JUST A COPY/PASTE OF THE DATA THAT THIS URL DISPLAYS IN BROWSER. ,
dataType : 'jsonp',
success : function(jsonData) {
alert(jsonData.PropertyName);
},
error : function() {
alert('Error loading the JSON data');
}
});
</script>
</head>
<body></body>
</html>
jsonデータは次のとおりです。
{
"PropertyID": 1468,
"PropertyName": "AG Test One",
"Listing Information": {
"Availability": "Not Specified",
"Pricing Information": "For Sale, Price: 1.00 (Set Price per Acre)"
},
"Location": {
"City": "ZZ",
"County": "ZZ Test County",
"Municipality": "Within City Limits",
"State": "SC",
"Tax Map ID": "123-123-123",
"ZipCode": "22222"
},
"Physical Details": {
"Certified Property": false,
"Minimum Divisible Acreage": 0,
"Site Comments": null,
"Site Improvements": "Forested",
"Surrounding Land Use": [
"North: Airport / Port / Intermodal Facility",
"South: Waterway (River / Lake)",
"East: Utility (Easements / Substations)",
"West: Correctional Facility"
],
"Total Site Size": 500,
"Zoning": null
},
"Transportation": {
"Barge Access": false,
"Name of Rail Carrier Providing Service": "None specified",
"Nearest Commercial Airport": "None Specified",
"Nearest Interstate": "None Specified",
"Nearest Sea Port": "None Specified",
"Railway Access": false,
"Runway Access": false
},
"Utilities": {
"Diameter of Waste Water Main": 0,
"Diameter of Water Main": 0,
"Distance To Electric Provider": 1,
"Distance to Natural Gas Provider": 0,
"Distance to Sewer Service": 0,
"Distance to Water Service": 0,
"Electric Provider": "Undetermined",
"Fire Insurance Rating": "1",
"Natural Gas Provider": null,
"Telecommunications Providers": null,
"Type of Sewer": "",
"Water Service Provider": "Undetermined",
"Water Water Service Provider": "Undetermined"
}
}
getJSONメソッドも試しました...ローカルと外部の両方のURLシナリオで同じ結果が得られます:
$(document).ready(function() {
$.getJSON('jsondata2.js', function(data) {
//$.getJSON('SAME LIVE URL HERE....', function(data) {
var output = "<ul>";
output += "<li>" + data.PropertyName + "</li>";
output += "</ul>";
document.getElementById("placeholder").innerHTML = output;
});
});