За последние 24 часа нас посетили 18434 программиста и 1606 роботов. Сейчас ищут 907 программистов ...

Данные в запросе

Тема в разделе "Прочие вопросы по PHP", создана пользователем Serjuk, 9 июн 2012.

  1. Serjuk

    Serjuk Активный пользователь

    С нами с:
    31 окт 2011
    Сообщения:
    44
    Симпатии:
    0
    Здравствуйте, возник вопрос.
    Я передаю со страницы в php файл данные в виде:
    Код (Text):
    1.  
    2. <script type="text/javascript">
    3. var data = new Object();
    4.         data.firstname = "Vasya";
    5.         data.lastname = "Ivanov";
    6.         data.amount = "9";  
    7. $.ajax({
    8.         type: 'POST', url: ссылка,data:data,
    9. ...
    10. </script>
    В php файле я принимаю данные:
    Код (Text):
    1.  
    2. $data = json_encode($_POST);
    Меня интересует, а как сделать, чтобы передавалось со страницы, только firstname, а уже к полученному в php файле добавлялось lastname и amount ?
    Подскажите, пожалуйста.
     
  2. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    как-как?
     
  3. Serjuk

    Serjuk Активный пользователь

    С нами с:
    31 окт 2011
    Сообщения:
    44
    Симпатии:
    0
  4. YSandro

    YSandro Старожил

    С нами с:
    7 апр 2011
    Сообщения:
    2.523
    Симпатии:
    2
    Serjuk, сформулируй другими словами, а то кроме тебя никто ничего не понял.
    Тут запятая после "страницы" точно нужна?
    Чему полученному? В каком php файле? (Есть подозрение, что ты о нем упомянул выше "в php файле я принимаю данные:", но хз.) Что значит "добавлялось lastname и amount"?
     
  5. Крыс

    Крыс Активный пользователь

    С нами с:
    3 фев 2012
    Сообщения:
    449
    Симпатии:
    0
    вот мне тоже не вполне ясно что имел ввиду автор :)
     
  6. Serjuk

    Serjuk Активный пользователь

    С нами с:
    31 окт 2011
    Сообщения:
    44
    Симпатии:
    0
    YSandro, запятая не нужна.Объясню по-другому. Предположим есть страница.По нажатию на кнопку на этой странице выполняется скрипт ( смотрите код первого сообщения) - передается firstname,lastname,amount в php файл, в котором данные записываются в data ( смотрите код первого сообщения). Мне нужно передавать со страницы только firstname без lastname и amount, т.е.
    Код (Text):
    1. <script type="text/javascript">
    2. var data = new Object();
    3.         data.firstname = "Vasya"; 
    4. $.ajax({
    5.       type: 'POST', url: ссылка,data:data,
    6. ...
    7. </script> 
     А дальше в php файле к  переменной data, в которую записывается результат передачи от страницы(firstname) добавить lastname,amount.
    Т.е. В таком варианте в data только firstname:
    Код (Text):
    1. $data = json_encode($_POST);
    а мне еще нужно там еще lastname = "Ivanov"; amount = "9"; 
     
  7. YSandro

    YSandro Старожил

    С нами с:
    7 апр 2011
    Сообщения:
    2.523
    Симпатии:
    2
    Если на сервере до первой выдачи страницы не было данных lastname и amount, то откуда на сервере появятся эти данные, если ты их даже передавать в запросе не хочешь? Как раз тебе нужно передавать все значения со страницы.
    Можно сохранить lastname и amount в куках, тогда при перезагрузке страницы, можно их взять из браузера обратно, но опять же, сервер о них не узнает, т.к. они будут сохранены через JS в браузере.

    Добавлено спустя 2 минуты 50 секунд:
    Ну или перед отправкой firstname сначала отправить отдельный запрос без перезагрузки страницы с lastname и amount, запомнить значения где-нибудь в сессии или базе.

    Добавлено спустя 5 минут 26 секунд:
    Можно попробовать в документе через JS сохранить куки, а потом в php взять из массива $_COOKIE. Но не знаю, не делал сам.
     
  8. Serjuk

    Serjuk Активный пользователь

    С нами с:
    31 окт 2011
    Сообщения:
    44
    Симпатии:
    0
    Они уже даны)их значения "Иванов" и "9" . Они неизменны
     
  9. YSandro

    YSandro Старожил

    С нами с:
    7 апр 2011
    Сообщения:
    2.523
    Симпатии:
    2
    Ну тогда чего париться, раз неизменны, то перед json_encode добавить
    Код (PHP):
    1. $_POST['lastname'] = 'Ivanov';
    2. $_POST['amount'] = 9;
    3. $data = json_encode($_POST); 
     
  10. Serjuk

    Serjuk Активный пользователь

    С нами с:
    31 окт 2011
    Сообщения:
    44
    Симпатии:
    0
    Спасибо, попробую)
     
  11. YSandro

    YSandro Старожил

    С нами с:
    7 апр 2011
    Сообщения:
    2.523
    Симпатии:
    2
    Вообще, не понятно, зачем принимать данные с json_encode, обычно принимают наоборот через json_decode, когда в $.ajax указывают dataType:"json"

    Вот так попробовал, получилось
    Код (PHP):
    1. <?php
    2. //formCookie.php
    3. if(isset($_POST['firstname'])){
    4.     $fn=mb_substr($_POST['firstname'],0,32);
    5.     $ln=(isset($_COOKIE['lastname']))?mb_substr($_COOKIE['lastname'],0,32):'';
    6.     $am=(isset($_COOKIE['amount']))?(int)$_COOKIE['amount']:0;
    7.  
    8.     file_put_contents('out.txt',"firstname:$fn\nlastname:$ln\namount:$am");
    9. }
    10. ?>
    11. <!DOCTYPE html>
    12. <html>
    13. <head>
    14. <meta charset="UTF-8"/>
    15. <title>form - cookie</title>
    16. <script src="jquery-1.7.1.min.js" type="text/javascript"></script>
    17. <script src="jquery.cookie.js" type="text/javascript"></script>
    18. <script>
    19. $(document).ready(function(){
    20.     $('#add_field').click(function(){//alert("click");
    21.         var data=new Object();
    22.     data.firstname="Vasya";
    23.     //data.lastname="Ivanov";
    24.     //data.amount="9";
    25.         $.cookie("lastname","Ivanov");
    26.         $.cookie("amount",9);
    27.         $.ajax({
    28.       type:'POST',url:'formCookie.php',data:data
    29.         }).done(function(){$('#out').text('sent data ok')});
    30.     });
    31. });
    32. </script>
    33. </head>
    34. <body>
    35. <div>[url="#"]klick me[/url]</div>
    36. <div id="out"></div>
    37. </body>
    38. </html>
    Тут lastname и amount сохраняются в куках (с помощью плагина jquery.cookie.js), а ajax запросом отправляется только firstname.
    Данные отправляются на этот же документ (у меня formCookie.php), сначала берем POST данные, потом COOKIE, сохраняетм в файл out.txt.