2016-05-06 3 views
0

私はwalkscore APIからwalkscoreを取得しようとしています。 私は私のPHPファイルにajaxリクエストを行いますが、私は応答を取得しますが、私はwalkscoreに警告しようとすると "JSON入力の予期しない終了"を取得しています。walkscore API JSONエラー

これは、PHP(私はURLから直接それをテストする場合、それは私に完全にJSON形式の結果を与える)

<? 
function getWalkScore($lat, $lon, $address) { 
    $address=urlencode($address); 
    $url = "http://api.walkscore.com/score?format=json&address=$address"; 
    $url .= "&lat=$lat&lon=$lon&wsapikey=KEY"; 
    $str = @file_get_contents($url); 
    return $str; 
} 

$lat = $_GET['lat']; 
$lon = $_GET['lon']; 
$address = stripslashes($_GET['address']); 
$json = getWalkScore($lat,$lon,$address); 
echo $json; 
?> 

であり、これは私のAJAX呼び出しです:

function loadStats() { 

var geocoder = new google.maps.Geocoder; 
var latlngStr = $("#loadStats").attr("data-latlng").split(',', 2); 
var latlng = {lat: parseFloat(latlngStr[0]), lng: parseFloat(latlngStr[1])}; 
var reverseAddress=''; 

geocoder.geocode({'location': latlng}, function(results, status) { 
if (status === google.maps.GeocoderStatus.OK) { 
    if (results[1]) { 
    map.setZoom(11);  

    /*** Getting address needed for Walkability API call ***/ 
    reverseAddress = results[1].formatted_address; 
    //alert (parseFloat(latlngStr[0])); 
    //alert(parseFloat(latlngStr[1])); 
    //alert(reverseAddress); 
    $.ajax({ 
     type:"GET",       
     url:"scripts/walkscore.php", 
     data: {"address" : reverseAddress , 
       "lat" : parseFloat(latlngStr[0]), 
       "lng" : parseFloat(latlngStr[1])        
    },      
    success: function(response){ 
    var obj = $.parseJSON(response); 
    alert(obj.walkscore);    
    } 
    }); 

    } else { 
    alert('No results found'); 
     } 
    } else { 
    alert('Geocoder failed due to: ' + status); 
    } 
}); 

//var Lat=$("#loadStats").attr("data-latlng").slice(0, $("#loadStats").attr("data-latlng").indexOf(",")) ;     
       //var Lng=$("#loadStats").attr("data-latlng").slice($("#loadStats").attr("data-latlng").indexOf(",")+1,$("#loadStats").attr("data-latlng").lenght) ; 

} 

Iドン私は何が間違っているのか分かりません。これはAPIから取得するJSONです

{ "status": 1 , "walkscore": 4 , "description": "Car-Dependent" , "updated": "2016-04-04 21:15:44.699150" , "logo_url": "https://cdn.walk.sc/images/api-logo.png" , "more_info_icon": "https://cdn.walk.sc/images/api-more-info.gif" , "more_info_link": "https://www.redfin.com/how-walk-score-works" , "ws_link": "https://www.walkscore.com/score/Acres-homes-Houston-TX-USA/lat=29.852555/lng=-95.447845/?utm_source=cinquedomande.com&utm_medium=ws_api&utm_campaign=ws_api" , "help_link": "https://www.redfin.com/how-walk-score-works" , "snapped_lat": 29.8530 , "snapped_lon": -95.4480 } 
+0

あなたはGETリクエストにJSONデータを渡すことはできません。代わりにPOSTを使用するか、データをqueryStringとして適切に渡します。また、JSONを返すことを期待している場合は、 'json'へのajax呼び出しで' dataType'を設定すると、jQueryが自動的に応答を解析します。 – dave

+0

チップをありがとうが、それでも動作していません。 walkscore.phpファイルは、サイト[link](https://www.walkscore.com/professional/api-sample-code.php)から取得しています。スクリプトはGET変数を必要とします。ポストしてdataType: "json"を追加すると、ajax呼び出しは失敗します。私はこの時点で何が問題になっているのかは分かりません。 –

答えて

0

私はそれを理解しました。 私はPHPスクリプトにlonの代わりにlngを渡すほど愚かでした。