0

私は NOOB で、他のユーザーが同様の問題に遭遇したことがわかりましたが、何時間もフラストレーションを感じた後、JSONP コールバック関数を機能させることができません。

Yahoo geo.places から「woeid」情報を抽出しようとしているので、それを使用して場所を指定して気象データを取得できます。フォームの「場所」ID から入力 (郵便番号など) を受け取り、Yahoo に送信します。

コードは、コンソールで xhr.responseText を見ると読み取れる XMLHttpRequest オブジェクトを返していますが、サーバーによってコールバック関数に渡されている JSON オブジェクトを抽出できません。

単純なエラーを犯しているに違いないことはわかっていますが、それが何であるかわかりません。jQuery で $.ajax メソッドを使用してデータを取得する方法を学習する前に、Javascript を使用してこれを実行しようとしています。

エラーがどこにあるか教えていただけますか?これが私のコードです:

// an XMLTHttpRequest
var xhr = null;

/*
* void
* getWoeid()
* gets WOEID from Yahoo geo.places to use in request
* for weather data
*
*/



function getWoeid() {
// instantiate XMLHttpRequest object
try {
    xhr = new XMLHttpRequest();
}
catch (e) {
    xhr = new ActiveXObject("Microsoft.XMLHTTP");
}

// handle old browsers
if (xhr == null) {
    alert("Ajax not supported by your browser!");
    return;
}

// construct URL
var userinput = document.getElementById("location").value;

var data = encodeURIComponent("select * from" +
            " geo.places where text =" + userinput);

var url = "http://query.yahooapis.com/v1/public/yql?q=" + data + "&format=json&    callback=callback";


// get data
xhr.onreadystatechange = handler;
xhr.open("GET", url, true);
xhr.send(null);
}


// callback function
function callback(response) {
    woeid = response;
}


/*
* void
* handler()
*
* Handles the Ajax response
*/

function handler() {

// only handle loaded requests
if (xhr.readyState == 4) {

    // display response if possible
    if (xhr.status == 200) {
          var location = woeid;
    }

    else    
       alert("Error with Ajax call");
}

}

4

1 に答える 1