2011-07-27 209 views
0

首先,我將使用jQuery做這個,如果谷歌Places API所允許JSONP請求,而是我使用的是標準的XMLHttpRequest:JSON請求幫助

function load() { 
    var req = new XMLHttpRequest(); 
    req.open('GET', 'https://maps.googleapis.com/maps/api/place/details/json?reference=CnRhAAAARMUGgu2CeASdhvnbS40Y5y5wwMIqXKfL-n90TSsPvtkdYinuMQfA2gZTjFGuQ85AMx8HTV7axABS7XQgFKyzudGd7JgAeY0iFAUsG5Up64R5LviFkKMMAc2yhrZ1lTh9GqcYCOhfk2b7k8RPGAaPxBIQDRhqoKjsWjPJhSb_6u2tIxoUsGJsEjYhdRiKIo6eow2CQFw5W58&sensor=true&key=xxxxxxxxxxxxx', false); 
    req.send(null); 

    if (req.status == 200) { 
     dump(req.responseText); 
    } 
} 

我有跨域問題但我真正要問的是,如果這是從Google Places API申請JSON最簡單的方法嗎?

我尋找做到這一點,而無需建立一個本地代理來處理跨域起源的東西最簡單的方法。

或者是有一個使用常規的JSON請求的另一個JavaScript工具包?

+1

您可以使用$ .getJSON()的JSON和JSONP jQuery中。 –

+2

供參考:谷歌是否支持地方JSONP對你是否會使用jQuery,其他一些工具,或香草JS沒有影響。 JSONP可以使用或不使用jQuery來完成,並且跨域安全性限制對所有用戶都是相同的。 – JAAulde

回答

1

如果Google Places API允許JSONP請求,我會用jQuery來做這件事。 是否有另一個使用常規JSON請求的javascript工具包?

的jQuery不限於JSONP。

function load() { 
    var url = 'https://maps.googleapis.com/maps/api/place/details/json?reference=CnRhAAAARMUGgu2CeASdhvnbS40Y5y5wwMIqXKfL-n90TSsPvtkdYinuMQfA2gZTjFGuQ85AMx8HTV7axABS7XQgFKyzudGd7JgAeY0iFAUsG5Up64R5LviFkKMMAc2yhrZ1lTh9GqcYCOhfk2b7k8RPGAaPxBIQDRhqoKjsWjPJhSb_6u2tIxoUsGJsEjYhdRiKIo6eow2CQFw5W58&sensor=true&key=xxxxxxxxxxxxx'; 
    $.ajax(url, { 
     async: false, 
     success: function(data, textStatus, jqXHR) { 
      dump(data); 
     } 
    }); 
} 

Note that

跨域請求和數據類型: 「JSONP」 請求不支持同步操作

所以你可能要切換到異步請求。

+0

我仍然獲得了「原產地_http:// websiterunningJS_沒有被訪問控制允許來源允許的」錯誤。 – alyx

+0

@jrbaldwinn:用什麼? –