2015-01-30 3 views
3

Я хочу преобразовать переменную javascript в переменную php.Javascript var to php var

Это код JQuery Я использую:

$('#add').click(function(){ 
    $.post(
     'user.php', 
     {saveidnumber: idnumber}, 
     function(){ 
      console.log('done') 
     } 
    ); 
}); 

PHP:

if(isset($_POST['saveidnumber'])){ 
    $saveid = $_POST['saveidnumber']; 
    echo $saveid; 
} 

Это выглядеть любит работу JQuery, потому что нет никаких ошибок в консоли, но PHP никогда не повторить это $saveid переменные , Что я делаю неправильно?

+1

где делают и хотят видеть эхо в PHP? –

+0

вы должны получить его в javascript part.'function (res) { console.log (res); } ' –

ответ

0

Я думаю, вы неправильно поняли концепцию безгражданства PHP, смешанную с асинхронными запросами ajax. Она работает следующим образом: 1. кто-то посылает запрос, чтобы получить user.php сайт 2. Сервер получает запрос и обработать его 3. сервер возвращает запрошенный сайт и это все

Так что, когда вы отправляете POST с помощью JavaScript (JQuery в вашем случае) изнутри этой страницы это отдельный запрос с отдельным ответом. Это означает, что вам нужно обработать этот ответ самостоятельно в javascript. Смотрите пример:

$('#add').click(function() 
{ 
    $.post('user.php', {saveidnumber: idnumber}, 
     function(data){ 
      console.log('done'); 
      $('.some-class').text(data); 
     } 
    );  
}); 

Это будет вставить ответ на любой HTML-элемент с классом some-class как

<div class="some-class"></div> 
+0

А, так что не стоит сохранять переменные javascript в php? Причина, по которой я хочу сохранить javascript в php, заключается в том, что я, наконец, хочу сохранить их в базе данных. – vweltje

+0

Вот и все. Я видел «echo» в вашем коде и думал, что вы просто хотите вывести какое-то значение. Я знаю, что вы хотите сделать, но вы используете неправильное слово. Вы не хотите сохранять js var в php, вы хотите отправить этот var в php. Если быть точным, вы хотите отправить значение этого var. В этом случае код из вопроса почти прав - он работает, но вы не увидите эхо-значение (я объяснил причину выше). Вместо этого замените 'echo $ saveid'' на 'file_put_contents ('output.txt ', $ saveid); '. Выполните его и посмотрите в файле 'output.txt'. '' –

+0

Спасибо, это работает! – vweltje

4

Try:

$.post('user.php', {saveidnumber: idnumber}, 
    function(result){ 
     console.log(result) 
}); 

Переменная result является HTML напечатан в user.php.

Переменная $saveid может быть просмотрена в консоли.

1

Когда вы эхо $saveid, он возвращается как ответ, поэтому вам нужно передать аргумент функции, который уловит возвращаемое значение со стороны сервера, и вы можете его напечатать в примере.

$('#add').click(function() 
    { 
     $.post('user.php', {saveidnumber: idnumber}, 
       function(data){ 
        console.log(data); //here return your $saveid; 
       } 
      );  
    }); 
+1

В чем разница между предыдущим ответом? –

+1

@ KirillPisarev. Разница - это тот, кто отвечает за объяснение причины. –

+0

@ KirillPisarev Это не мой ответ. –