Ajax没有向PHP发送javascript变量

时间:2012-03-05 09:23:03

标签: php javascript ajax variables

我已经尽可能地使用下面的脚本,但我不能为我的生活解决为什么页面ID没有被发送到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.'); 
        }

    });
}

5 个答案:

答案 0 :(得分:3)

使用

 'id='+id+....

而不是

'?id='+id+....

答案 1 :(得分: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中是预期的。删除它也可以。

答案 2 :(得分:0)

尝试将对象分配给ajax数据参数

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

答案 3 :(得分: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.'); 
        }

    });
}

试试这个......。

答案 4 :(得分:0)

您可以将dataString添加到网址

url: 'search.php' + dataString,

或者你可以删除前导'?'来自dataString

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

通过这种方式,您将获得身份证。