Ajax не отправляет переменную javascript в PHP - PullRequest
1 голос
/ 05 марта 2012

С помощью приведенного ниже сценария я продвинулся настолько далеко, насколько смог, но не могу понять, почему идентификатор страницы не отправляется в сценарий PHP.

В настоящее время я беру «index.php? Id = 12» с помощью команды PHP _GET, а затем вставляю это в переменную Javascript. Я установил 2-ю переменную, которая включает это, а также строку для широты и долготы. Когда я проверяю, что строка создается с помощью предупреждения, она выглядит точно так же, как и должна.

Внутри моего 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 ]

3 голосов
/ 05 марта 2012

используйте

 'id='+id+....

вместо

'?id='+id+....
1 голос
/ 05 марта 2012

Если вам нужен объект, а не строка, это будет работать:

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 голосов
/ 05 марта 2012

Вы можете добавить dataString к URL

url: 'search.php' + dataString,

или вы можете удалить ведущий '?' из dataString

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

Таким образом, вы получите идентификатор.

0 голосов
/ 05 марта 2012
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.'); 
        }

    });
}

попробуйте это ..che

0 голосов
/ 05 марта 2012

Попробуйте назначить объект параметру данных ajax

data: {
    id : <?php echo $id; ?>,
    action : "",
    latitude : position.coords.latitude,
    longitude : position.coords.longitude
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...