Intereting Posts
Как пути вычисляются в PHP – Почему файлы в текущей директории игнорируются? написать форму в базу данных с помощью jquery Как я могу группировать элементы формы Невозможно использовать mysqli в php flex env на движке приложения Заголовок PHP: Content-disposition: attachment, then Location: некоторый url Как PHP избегает бесконечной рекурсии? как передать пользовательские поля в $ _POST или $ _GET в окне CKEdtior Upload? Получение запроса на перекрестный запрос исходного кода при использовании .getJSON для получения сведений о приложении Play Store Отчет PDO, подготовленный – какие двоеточия используются в именах параметров? Laravel – Как получить изображения из / хранения Преобразование формата ISO 8601 в d MY в PHP Не работает PHP echo echo? Обработка связей при ранжировании от наивысшего до самого низкого Является array_key_exists ('submit_input_name', $ _ POST) лучше, чем ($ _POST == "submit_input_name") Twitter json API иностранные символы

Вызов функции PHP после события onClick HTML

Цель: вызвать функцию PHP для чтения данных из файла и переписать ее. Я использовал PHP только для этой цели – FileIO – и я новичок в PHP.

Решение? Я пробовал через многие форумы и знал, что мы не можем добиться этого обычным способом: onClick event> call function. Как мы можем это сделать, есть ли другие способы, особенно в моем случае? Мой код HTML и код PHP находятся на одной странице: Admin.php. Это часть HTML:

<form> <fieldset> <legend>Add New Contact</legend> <input type="text" name="fullname" placeholder="First name and last name" required /> <br /> <input type="email" name="email" placeholder="etc@company.com" required /> <br /> <input type="text" name="phone" placeholder="Personal phone number: mobile, home phone etc." required /> <br /> <input type="submit" name="submit" class="button" value="Add Contact" onClick="" /> <input type="button" name="cancel" class="button" value="Reset" /> </fieldset> </form> 

Это часть PHP:

 function saveContact() { $datafile = fopen ("data/data.json", "a+"); if(!$datafile){ echo "<script>alert('Data not existed!')</script>"; } else{ ... $contact_list = $contact_list . addNewContact(); ... file_put_contents("data/data.json", $contact_list); } fclose($datafile); } function addNewContact() { $new = '{'; $new = $new . '"fullname":"' . $_GET['fullname'] . '",'; $new = $new . '"email":"' . $_GET['email'] . '",'; $new = $new . '"phone":"' . $_GET['phone'] . '",'; $new = $new . '}'; return $new; } 

Посмотрите на этот код, я хочу вызвать saveContact, когда люди нажимают кнопку «Добавить контакт». Мы можем перезагрузить страницу, если это необходимо. FYI, я использую JQuery, HTML5 на странице. Благодаря,

Есть два пути. первый – полностью обновить страницу, используя типичную подачу формы

 //your_page.php <?php $saveSuccess = null; $saveMessage = null; if($_SERVER['REQUEST_METHOD'] == 'POST') { // if form has been posted process data // you dont need the addContact function you jsut need to put it in a new array // and it doesnt make sense in this context so jsut do it here // then used json_decode and json_decode to read/save your json in // saveContact() $data = array( 'fullname' = $_POST['fullname'], 'email' => $_POST['email'], 'phone' => $_POST['phone'] ); // always return true if you save the contact data ok or false if it fails if(($saveSuccess = saveContact($data)) { $saveMessage = 'Your submission has been saved!'; } else { $saveMessage = 'There was a problem saving your submission.'; } } ?> <!-- your other html --> <?php if($saveSuccess !== null): ?> <p class="flash_message"><?php echo $saveMessage ?></p> <?php endif; ?> <form action="your_page.php" method="post"> <fieldset> <legend>Add New Contact</legend> <input type="text" name="fullname" placeholder="First name and last name" required /> <br /> <input type="email" name="email" placeholder="etc@company.com" required /> <br /> <input type="text" name="phone" placeholder="Personal phone number: mobile, home phone etc." required /> <br /> <input type="submit" name="submit" class="button" value="Add Contact" onClick="" /> <input type="button" name="cancel" class="button" value="Reset" /> </fieldset> </form> <!-- the rest of your HTML --> 

Второй способ – использовать AJAX. для этого вы хотите полностью отделить обработку формы от отдельного файла:

// process.php

 $response = array(); if($_SERVER['REQUEST_METHOD'] == 'POST') { // if form has been posted process data // you dont need the addContact function you jsut need to put it in a new array // and it doesnt make sense in this context so jsut do it here // then used json_decode and json_decode to read/save your json in // saveContact() $data = array( 'fullname' => $_POST['fullname'], 'email' => $_POST['email'], 'phone' => $_POST['phone'] ); // always return true if you save the contact data ok or false if it fails $response['status'] = saveContact($data) ? 'success' : 'error'; $response['message'] = $response['status'] ? 'Your submission has been saved!' : 'There was a problem saving your submission.'; header('Content-type: application/json'); echo json_encode($response); exit; } ?> 

И затем в вашем html / js

 <form id="add_contact" action="process.php" method="post"> <fieldset> <legend>Add New Contact</legend> <input type="text" name="fullname" placeholder="First name and last name" required /> <br /> <input type="email" name="email" placeholder="etc@company.com" required /> <br /> <input type="text" name="phone" placeholder="Personal phone number: mobile, home phone etc." required /> <br /> <input id="add_contact_submit" type="submit" name="submit" class="button" value="Add Contact" onClick="" /> <input type="button" name="cancel" class="button" value="Reset" /> </fieldset> </form> <script type="text/javascript"> $(function(){ $('#add_contact_submit').click(function(e){ e.preventDefault(); $form = $(this).closest('form'); // if you need to then wrap this ajax call in conditional logic $.ajax({ url: $form.attr('action'), type: $form.attr('method'), dataType: 'json', success: function(responseJson) { $form.before("<p>"+responseJson.message+"</p>"); }, error: function() { $form.before("<p>There was an error processing your request.</p>"); } }); }); }); </script> 
 <div id="sample"></div> <form> <fieldset> <legend>Add New Contact</legend> <input type="text" name="fullname" placeholder="First name and last name" required /> <br /> <input type="email" name="email" placeholder="etc@company.com" required /> <br /> <input type="text" name="phone" placeholder="Personal phone number: mobile, home phone etc." required /> <br /> <input type="submit" name="submit" id= "submitButton" class="button" value="Add Contact" onClick="" /> <input type="button" name="cancel" class="button" value="Reset" /> </fieldset> </form> <script> $(document).ready(function(){ $("#submitButton").click(function(){ $("#sample").load(filenameofyourfunction?the the variable you need); }); }); </script> 

Для этого вам не нужен javascript. Просто удалите onClick и напишите файл php Admin.php следующим образом:

 <!-- HTML STARTS--> <?php //If all the required fields are filled if (!empty($GET_['fullname'])&&!empty($GET_['email'])&&!empty($GET_['name'])) { function addNewContact() { $new = '{'; $new .= '"fullname":"' . $_GET['fullname'] . '",'; $new .= '"email":"' . $_GET['email'] . '",'; $new .= '"phone":"' . $_GET['phone'] . '",'; $new .= '}'; return $new; } function saveContact() { $datafile = fopen ("data/data.json", "a+"); if(!$datafile){ echo "<script>alert('Data not existed!')</script>"; } else{ $contact_list = $contact_list . addNewContact(); file_put_contents("data/data.json", $contact_list); } fclose($datafile); } // Call the function saveContact() saveContact(); echo "Thank you for joining us"; } else //If the form is not submited or not all the required fields are filled { ?> <form> <fieldset> <legend>Add New Contact</legend> <input type="text" name="fullname" placeholder="First name and last name" required /> <br /> <input type="email" name="email" placeholder="etc@company.com" required /> <br /> <input type="text" name="phone" placeholder="Personal phone number: mobile, home phone etc." required /> <br /> <input type="submit" name="submit" class="button" value="Add Contact"/> <input type="button" name="cancel" class="button" value="Reset" /> </fieldset> </form> <?php } ?> <!-- HTML ENDS --> 

Думаю, мне не нравится бит PHP. Вы действительно хотите создать файл для контактов? Было бы намного лучше использовать базу данных mysql. Кроме того, добавление некоторых перерывов в этот файл было бы неплохо …

Другая мысль, IE не поддерживает местозаполнитель.

  cell1.innerHTML="<?php echo $customerDESC; ?>"; cell2.innerHTML="<?php echo $comm; ?>"; cell3.innerHTML="<?php echo $expressFEE; ?>"; cell4.innerHTML="<?php echo $totao_unit_price; ?>"; 

он работает как шарм, javascript внутри php while loop