jQuery的Ajax响应文本没有完成

问题描述:

我有一个页面中,我需要重新加载的纬度和经度刷新谷歌地图。我做到这一点使用AJAX,JS的功能是这样的:jQuery的Ajax响应文本没有完成

function refreshMap(idCamiones) 
{ 

$.ajax({ 
    type: "GET", 
    async: false, 
    url: "refresh.php", 
    data: "idCamiones="+idCamiones, 
    contentType: "application/x-www-form-urlencoded", 
    success : function(text) 
     { 
      refresh = text; 
     } 
}); 

//Borramos todos los marcadores actuales 
for (i in markersArray) {markersArray[i].setMap(null);} 
markersArray.length=0; 

//generamos un array con las latitudes en pares y las longitudes en nones. 
posArray=refresh.split(","); 
for(i=0;i<=posArray.length;i=i+2) 
{ 
addMarker(2,posArray[i],posArray[i+1]); 
} 
} 

refresh是一个全局变量JS存储从PHP文件的响应。如果我使用浏览器调用PHP文件的数据是完整的,我想要得到(posArrray[0],..,posArray[n]),但如果我使用JS函数调用PHP,则JS变量仅保存(posArray[n-1],posArray[n]),并且所有其他坐标仅在JS变量中丢失PHP脚本运行良好。

<?php 
include_once("conexion.php"); 
$idCamiones=$_GET['idCamiones']; 
$reponse=''; 
$query="SELECT * from datos INNER JOIN dbo.eventos ON eventos.codigo=datos.codigo where id IN (
Select max(id) from datos where camion in (".$idCamiones.") group by serie) order by serie"; 
$bD=new COM("ADODB.Recordset"); 
$bD->Open($query,$conn); 
$busData=fetch_assoc($bD); 
$bD->close(); 
for($i=0;$i<sizeof($busData);$i++) 
{ 
$response.=$busData[$i]['latitud'].",".$busData[$i]['longitud'].","; 
} 
    echo $response; 

?>

我不知道如果我回到在php文件不正确,我也试图与refresh=$.ajax({}).responseText;的$回应,我也得到了相同的结果。

+0

你说你应该得到一个纬度和经度的列表,你在php中的for循环似乎支持这个。然而,[FETCH_ASSOC](http://php.net/manual/en/mysqli-result.fetch-assoc.php)仅返回当前记录,而不是整个记录集的阵列。 – jwatts1980 2011-02-11 21:46:14

直接在浏览器的地址栏中调用您的AJAX url +参数并查看它的响应。

如果你有FF和Firebug,你可以使用NET-> XHR标签直接检查请求和响应。

+0

直接调用它的浏览器给了我所有的结果,但同时使用萤火虫只是一个参数的函数内发送不作为3是应该的! – Gustavo 2011-02-11 23:17:56

如果警报(文本),这是否给出正确的信息?在Firebug的控制台中,当你看到响应时,它是正确的还是不正确的?

我有我自己的地图,但我没有这个问题。我从来没有见过一个Ajax查询发送比我在浏览器中看到的少,除非它是xml中断的问题。

你为什么要使用特定的内容类型?我只使用XML或HTML。

+0

以及使用警报(文本)的阵列相同的最后两个项目被显示,但在使用萤火我意识到,当函数被调用只有一个参数refreshMap(9),当它应该像refreshMap(9,15 ,17),但后来我检查了我的html文档上的函数,它看起来像这样var vario = window.setInterval('refreshMap(9,15,17)',1000); – Gustavo 2011-02-11 23:15:56

问题解决了谢谢,问题出在函数refreshMap(9,15,17)中发送的参数中,PHP脚本将9作为唯一值,因此我只是添加了引号以将参数作为字符串发送,诀窍,谢谢你,我忘了萤火虫,我只是使用铬控制台。