2012-03-05 145 views
1

我儘可能使用下面的腳本,但我不能爲我的生活找出爲什麼頁面id不會被髮送到PHP腳本。Ajax沒有發送JavaScript變量到PHP

目前我用PHP _GET命令抓取「index.php?id = 12」,然後將其插入到JavaScript變量中。我設置了一個包含該變量的第二個變量,以及一個經緯度字符串。當我測試通過警報創建字符串時,字符串看起來應該像它一樣。

在我的PHP腳本中,我只有每一個獲取經度和緯度的數據,但從來沒有id數據。讀過這裏的其他線程後,我相信Ajax期待一個對象,並且該字符串是意外的。不幸的是,我不知道如何解決這個問題。

我的JavaScript如下:

function GeoSuccess(position) { 
    var id = <?php echo $id ?>; 
    var dataString = '?id='+id+'&action=geolocation&latitude='+position.coords.latitude+'&longitude='+position.coords.longitude; 

    $.ajax({ 
     url: 'search.php', 
     type: 'GET', 
     data: dataString, 
     success: function (msg) { 
     $('div#search-results').html(msg); 
     }, 
     error: function (XMLHttpRequest, textStatus, errorThrown) 
     { 
     alert('Error submitting request.'); 
     } 

    }); 
} 

回答

1

如果你想要一個對象,而不是一個字符串,這會工作:

var data = { 
    id: id, 
    action: 'geolocation', 
    latitude: position.coords.latitude, 
    longitude: position.coords.longitude, 
} 

$.ajax({ 
    url: 'search.php', 
    type: 'GET', 
    data: data, 
// .... snip 

我不知道,但我不認爲'?'預計在你的dataString。刪除它也可以工作。

+0

工程魅力。謝謝! – Ashkas 2012-03-05 10:11:46

0

嘗試將對象分配給阿賈克斯的數據參數

data: { 
    id : <?php echo $id; ?>, 
    action : "", 
    latitude : position.coords.latitude, 
    longitude : position.coords.longitude 
} 
3

使用

'id='+id+.... 

,而不是

'?id='+id+.... 
0
function GeoSuccess(position) { 
    var id = <?php echo $id ?>; 
    var dataObject = new Object(); 
    dataObject.id=id; 
    dataObject.action=geolocation; 
    dataObject.altitude=position.coords.latitude; 
    dataObject.longitude=position.coords.longitude; 


    $.ajax({ 
     url: 'search.php', 
     type: 'POST', 
     data: dataObject , 
     success: function (msg) { 
     $('div#search-results').html(msg); 
     }, 
     error: function (XMLHttpRequest, textStatus, errorThrown) 
     { 
     alert('Error submitting request.'); 
     } 

    }); 
} 

嘗試this..che

+0

檢查瓢蟲淨標籤中發送的數據 – Rajesh 2012-03-05 09:32:22

+0

很遺憾這種方法沒有成功。 – Ashkas 2012-03-05 10:11:26

+0

你可以檢查螢火蟲淨選項卡中的請求標頭嗎?在這裏粘貼請求標頭的內容..Firebug是一個Mozilla Firefox的插件..在這裏用url'search.php'來刷新rquest標頭..我相信我們會得到一些運氣 – Rajesh 2012-03-05 11:54:22

0

您可以添加dataString到URL

url: 'search.php' + dataString, 

,也可以刪除前面的 '?' from dataString

var dataString = 'id='+id+'&action=geolocation&latitude='+position.coords.latitude+'&longitude='+position.coords.longitude; 

這樣你就會得到id。