2011-02-11 50 views
1

我有一個頁面中,我需要重新加載的緯度和經度刷新谷歌地圖。我做到這一點使用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

回答

0

直接在瀏覽器的地址欄中調用您的AJAX url +參數並查看它的響應。

如果你有FF和Firebug,你可以使用NET-> XHR標籤直接檢查請求和響應。

+0

直接調用它的瀏覽器給了我所有的結果,但同時使用螢火蟲只是一個參數的函數內發送不作爲3是應該的! – Gustavo 2011-02-11 23:17:56

0

如果警報(文本),這是否給出正確的信息?在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

1

問題解決了謝謝,問題出在函數refreshMap(9,15,17)中發送的參數中,PHP腳本將9作爲唯一值,因此我只是添加了引號以將參數作爲字符串發送,訣竅,謝謝你,我忘了螢火蟲,我只是使用鉻控制檯。