JavaScript 没有按预期调用下一个函数

标签 javascript

这让我陷入困境......我正在调用一个外部url(实际上有2个调用,一个用于数据的id,下一个调用是用于详细信息,我想要捕获的是来自第二次调用)在 map 上放置标记

这是从我的页面 body 元素中的 onload 事件调用的代码

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
        });
    }
}

最佳答案

Here ,它显示设置 jsonp: false:

Override the callback function name in a jsonp request. This value will be used instead of 'callback' in the 'callback=?' part of the query string in the url. So {jsonp:'onJSONPLoad'} would result in 'onJSONPLoad=?' passed to the server. As of jQuery 1.5, setting the jsonp option to false prevents jQuery from adding the "?callback" string to the URL or attempting to use "=?" for transformation. In this case, you should also explicitly set the jsonpCallback setting. For example, { jsonp: false, jsonpCallback: "callbackName" }

底部的示例以及以下部分:

...setting the jsonp option to false prevents jQuery from adding the "?callback" string to the URL or attempting to use "=?" for transformation"...

关于JavaScript 没有按预期调用下一个函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24556129/

相关文章:

javascript - 如何将Json数据转换为EXTJS中的变量

javascript - 将文本添加到 Javascript Span id jquery

javascript - 为什么在 AngularJS 指令中弃用 `replace: true`

javascript - 从客户端的对象数组中获取最新日期的优雅方法是什么?

javascript - 在事件回调中获取对模型的引用

javascript - 当我发送 res.send(body) 时,我在 body 中变得不确定

javascript - 如何在 firebase 中查询给定键的多个值

javascript - 消除 D3 基线图过渡中的突然添加/删除

javascript - tinyMCE Local Install 不适用于本地 js 文件,但可以用于远程 js 文件

javascript - 如何从 forEach 方法中删除不需要的计数增量?