这让我陷入困境......我正在调用一个外部网址(实际上有2个调用一个数据的id,下一个调用是详细信息,我要捕获的是lat& long from第二个电话)将标记放在地图上
以下是从我页面的onload
元素中的body
事件调用的代码
var firstpass = true;
function getResults(zip) {
var zipi = parseInt(zip);
// or
// function getResults(lat, lng) {
$.ajax({
type: "GET",
contentType: "application/json; charset=utf-8",
// submit a get request to the restful service zipSearch or locSearch.
url: "http://search.ams.usda.gov/farmersmarkets/v1/data.svc/zipSearch?zip=" + zipi,
// or
// url: "http://search.ams.usda.gov/farmersmarkets/v1/data.svc/locSearch?lat=" + lat + "&lng=" + lng,
dataType: 'jsonp',
jsonpCallback: 'searchResultsHandler'
});
}
//iterate through the JSON result object.
function searchResultsHandler(searchResults) {
for (var key in searchResults) {
var results = searchResults[key];
for (var i = 0; i < results.length; i++) {
var result = results[i];
for (var key in result) {
getDetails(result['id']);
}
}
}
}
function getDetails(id) {
$.ajax({
type: "GET",
contentType: "application/json; charset=utf-8",
// submit a get request to the restful service mktDetail.
url: "http://search.ams.usda.gov/farmersmarkets/v1/data.svc/mktDetail?id=" + id,
dataType: 'jsonp',
jsonpCallback: 'detailResultHandler'
});)
//iterate through the JSON result object.
function detailResultHandler(detailresults) {
for (var key in detailresults) {
alert(key);
var results = detailresults[key];
alert(results['GoogleLink']);
var urlglink = (results["GoogleLink"]);
var loca = (urlglink.split("q=")[1]);
var lat = (loca.split("%2C%20")[0]);
var long = (loca.split("%2C%20")[1]);
var loc = (long.split("%20")[0]);
var latlong = lat + "," + loc;
var marker;
if (firstpass === true) {
var map = new google.maps.Map(document.getElementById('map-canvas'), {
zoom: 10,
center: new google.maps.LatLng(latlong),
mapTypeId: google.maps.MapTypeId.ROADMAP
});
firstpass = false;
}
var infowindow = new google.maps.InfoWindow();
marker = new google.maps.Marker({
position: new google.maps.LatLng(latlong),
map: map
});
}
}
答案 0 :(得分:1)
Here,它显示设置jsonp: false
:
覆盖jsonp请求中的回调函数名称。这个值 将在'callback =?'中使用而不是'callback'的一部分 在url中查询字符串。所以{jsonp:'onJSONPLoad'}会导致 'onJSONPLoad =?传递给服务器。从jQuery 1.5开始,设置 jsonp选项为false可防止jQuery添加“?回调” 字符串到URL或尝试使用“=?”转型。在 在这种情况下,您还应该显式设置jsonpCallback设置。 例如,{jsonp:false,jsonpCallback:“callbackName”}
底部的示例,以及说:
的部分...设置 jsonp选项为false可防止jQuery添加“?回调” 字符串到URL或尝试使用“=?”转型“......