2017-02-01 2 views
0

私はjsonpを作成して天気の地下クエリーを実行しようとしています。彼らの公式文書では、cbがコールバック名(https://www.wunderground.com/weather/api/d/docs?d=autocomplete-api&MR=1#using_results)だと言いますが、私は "Uncaught SyntaxError:Unexpected token:"エラーを受けています。私は純粋なjavascriptでこれをしようとしているが、私はそのような運がないと私が見つけたすべての例は、jqueryメソッドです。どんな助けもありがとう。予期しないトークンを取得する:天気地下のjsonp cbの後

これは、エラーの例です: "キャッチされないでSyntaxError:予期しないトークン:??AQクエリ=サクラメントのコールバック= CB:1":

var citySearch = document.getElementById("citySearchForm"); 
var search; 

function searchFormFunc(e){ 

    jsonP = "?callback=cb"; 
    cityName = document.getElementById('getCitiesInput').value; 

    var cityNameJsonP = cityName + jsonP; 

    var searchCityLink = "http://autocomplete.wunderground.com/aq?query="; 
    search = searchCityLink.concat(cityNameJsonP); 

    console.log(search); 

    var script = document.createElement('script'); 
    script.src = search; 
    document.getElementsByTagName('head')[0].appendChild(script); 

    function cb(data){ 
     console.log("fired"); 
     console.log(data); 
    } 
} 

答えて

2

あなたのURLここ

はjavascriptのコードですtheir apiを経由して、有効なURLは次のようになり

http://autocomplete.wunderground.com/aq?query=FOOBAR?callback=cb 

になるだろう

http://autocomplete.wunderground.com/aq?query=20500&cb=cb 

値をエンコードする必要があります。複数のクエリ文字列パラメータには&を使用する必要があります。

jsonP = "&cb=cb"; 
cityName = encodeURICompontent(document.getElementById('getCitiesInput').value); 

var cityNameJsonP = cityName + jsonP; 
+0

@ epascarello&cb = cbがトリックを行いました。ありがとう、私はそこにこだわっていた。 –

+0

そして問題はあなたがdocumenationに従わなかったことです、それはコールバックではありません – epascarello

+0

@ guest271314、私の答えでは、OPが何をしているかを示す例では、2つあります。 – epascarello

関連する問題