Здравствуйте, возник вопрос. Я передаю со страницы в php файл данные в виде: Код (Text): <script type="text/javascript"> var data = new Object(); data.firstname = "Vasya"; data.lastname = "Ivanov"; data.amount = "9"; $.ajax({ type: 'POST', url: ссылка,data:data, ... </script> В php файле я принимаю данные: Код (Text): $data = json_encode($_POST); Меня интересует, а как сделать, чтобы передавалось со страницы, только firstname, а уже к полученному в php файле добавлялось lastname и amount ? Подскажите, пожалуйста.
Serjuk, сформулируй другими словами, а то кроме тебя никто ничего не понял. Тут запятая после "страницы" точно нужна? Чему полученному? В каком php файле? (Есть подозрение, что ты о нем упомянул выше "в php файле я принимаю данные:", но хз.) Что значит "добавлялось lastname и amount"?
YSandro, запятая не нужна.Объясню по-другому. Предположим есть страница.По нажатию на кнопку на этой странице выполняется скрипт ( смотрите код первого сообщения) - передается firstname,lastname,amount в php файл, в котором данные записываются в data ( смотрите код первого сообщения). Мне нужно передавать со страницы только firstname без lastname и amount, т.е. Код (Text): <script type="text/javascript"> var data = new Object(); data.firstname = "Vasya"; $.ajax({ type: 'POST', url: ссылка,data:data, ... </script> А дальше в php файле к переменной data, в которую записывается результат передачи от страницы(firstname) добавить lastname,amount. Т.е. В таком варианте в data только firstname: Код (Text): $data = json_encode($_POST); а мне еще нужно там еще lastname = "Ivanov"; amount = "9";
Если на сервере до первой выдачи страницы не было данных lastname и amount, то откуда на сервере появятся эти данные, если ты их даже передавать в запросе не хочешь? Как раз тебе нужно передавать все значения со страницы. Можно сохранить lastname и amount в куках, тогда при перезагрузке страницы, можно их взять из браузера обратно, но опять же, сервер о них не узнает, т.к. они будут сохранены через JS в браузере. Добавлено спустя 2 минуты 50 секунд: Ну или перед отправкой firstname сначала отправить отдельный запрос без перезагрузки страницы с lastname и amount, запомнить значения где-нибудь в сессии или базе. Добавлено спустя 5 минут 26 секунд: Можно попробовать в документе через JS сохранить куки, а потом в php взять из массива $_COOKIE. Но не знаю, не делал сам.
Ну тогда чего париться, раз неизменны, то перед json_encode добавить Код (PHP): $_POST['lastname'] = 'Ivanov'; $_POST['amount'] = 9; $data = json_encode($_POST);
Вообще, не понятно, зачем принимать данные с json_encode, обычно принимают наоборот через json_decode, когда в $.ajax указывают dataType:"json" Вот так попробовал, получилось Код (PHP): <?php //formCookie.php if(isset($_POST['firstname'])){ $fn=mb_substr($_POST['firstname'],0,32); $ln=(isset($_COOKIE['lastname']))?mb_substr($_COOKIE['lastname'],0,32):''; $am=(isset($_COOKIE['amount']))?(int)$_COOKIE['amount']:0; file_put_contents('out.txt',"firstname:$fn\nlastname:$ln\namount:$am"); } ?> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"/> <title>form - cookie</title> <script src="jquery-1.7.1.min.js" type="text/javascript"></script> <script src="jquery.cookie.js" type="text/javascript"></script> <script> $(document).ready(function(){ $('#add_field').click(function(){//alert("click"); var data=new Object(); data.firstname="Vasya"; //data.lastname="Ivanov"; //data.amount="9"; $.cookie("lastname","Ivanov"); $.cookie("amount",9); $.ajax({ type:'POST',url:'formCookie.php',data:data }).done(function(){$('#out').text('sent data ok')}); }); }); </script> </head> <body> <div>[url="#"]klick me[/url]</div> <div id="out"></div> </body> </html> Тут lastname и amount сохраняются в куках (с помощью плагина jquery.cookie.js), а ajax запросом отправляется только firstname. Данные отправляются на этот же документ (у меня formCookie.php), сначала берем POST данные, потом COOKIE, сохраняетм в файл out.txt.