我有两个文件:一个文件包含php代码(并且可以正常工作),另一个文件包含javacript。
问题出在javascript页面:

function calcDist() {
    var citta = $("#txtpartenza").val();


    $.ajax({
        type: "POST",
        url: 'mostraPartenze.php',
        dataType: "json",
        success: function (data) {
            $.each(data, function (index) {
                var partenza = data[index];
                trovaGeo(citta, partenza);

            });

        }

    });
}

function trovaGeo(partenza, destinazione) {
    var latPartenza;
    var lonPartenza;
    var latDestinazione;
    var lonDestinazione;

    console.log(partenza);            // for test
    console.log(destinazione);        // for test

    var xmlhttpPart = new XMLHttpRequest();
    var xmlhttpDest = new XMLHttpRequest();

    xmlhttpPart.open("GET", "https://geocoder.cit.api.here.com/6.2/geocode.json?searchtext="+partenza+"&app_id=[APP_ID]&app_code=[APP_CODE]&gen=8", true);
    xmlhttpPart.send();

    xmlhttpDest.open("GET", "https://geocoder.cit.api.here.com/6.2/geocode.json?searchtext="+destinazione+"&app_id=[APP_ID]&app_code=[APP_CODE]&gen=8", true);
    xmlhttpDest.send();

    xmlhttpPart.onreadystatechange = function () {
        if (xmlhttpPart.readyState == 4 && xmlhttpPart.status == 200) {
            xmlhttpDest.onreadystatechange = function () {
                if (xmlhttpDest.readyState == 4 && xmlhttpDest.status == 200) {

                    var resPart = JSON.parse(xmlhttpPart.responseText);

                    latPartenza = resPart.Response.View[0].Result[0].Location.DisplayPosition.Latitude;
                    lonPartenza = resPart.Response.View[0].Result[0].Location.DisplayPosition.Longitude;

                    var resDest = JSON.parse(xmlhttpDest.responseText);

                    latDestinazione = resDest.Response.View[0].Result[0].Location.DisplayPosition.Latitude;
                    lonDestinazione = resDest.Response.View[0].Result[0].Location.DisplayPosition.Longitude;

                    lonDestinazione = resDest.Response.View[0].Result[0].Location.DisplayPosition.Longitude;

                    console.log(latPartenza);
                }

            };
        }
    };

}


Ajax正常工作;我可以毫无问题地调用trovaGeo(citta, partenza),但是在trovaGeo(partenza, destinazione)函数中,XMLHttpRequest“ part”无法正常工作:在控制台中,变量latPartenza从未打印过,显然xmlhttpPart.onreadystatechange = [...]中的所有代码也从未执行过。

为了完整性,这是php文件的核心:

$i = 0;
$citta = array();

while ($rows = $result->fetch_assoc()) {
    $citta[$i] = $rows['partenza'];
    $i=$i+1;
}
echo json_encode($citta);

最佳答案

我发现问题了。

我必须在preventDefault事件的第一行中使用on('submit'...

这是解决方案:

$('form').on('submit', function (e) {

    e.preventDefault();

    [...]

关于javascript - 如何迭代XMLHttpRequest?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56905267/

10-09 18:33