Intereting Posts
таблица обновляет пустое пространство, когда пользователь ничего не вводит в текстовое поле Не удается установить gmagick на Windows 7 XAMPP Как использовать php restful api-centric design internal вместо HTTP-запроса Как использовать PHP OPCache? всегда не удалось отправить изображение с помощью API телеграмм с помощью PHP Как использовать implode для массива объектов stdClass? Как сортировать массив значения по альфа-ставке в php, используя функцию asort () () Кнопка увеличения значения Нажатие кнопки «Назад» перенаправляет зарегистрированного пользователя для выхода из системы? mysql и кодирование Невозможно изменить имя файла cookie php Как заставить построитель запросов выводить свой необработанный SQL-запрос в виде строки? mysql выбирает данные из двух таблиц и различной структуры Как получить весь столбец с именем, имеющим одно и то же имя, при использовании красноречия laravel? Удаление строки из вывода php json

Отправка json на php-сервер с помощью jquery ajax – json error

У меня проблема с моей формой на моей веб-странице. Я пытаюсь использовать ajax и json для отправки значений формы на php-сервер, но я не могу правильно создать json-объект.

Мой JS-код

function sendJsonOpenPopout () { $('.submitBtn').click(function(e){ e.preventDefault(); var subject = $('.subject').val(); var email = $('.email').val(); var message = $('.message').val(); var dataObject = { subject: subject, email: email, message: message } $.ajax({ type: 'POST', url: '../../kontakt.php', contentType: "application/json", dataType: 'json', data: dataObject, success: function(data){ alert('Items added'); }, error: function(){ console.log('You have fail'); } //success: function(){ //var createdDiv = '<div class="divToBeCentered"><p class="dataText">Wiadomość została wysłana pomyślnie.\brDziękuję za kontakt.</p></div>'; //$('body').append(createdDiv); //} }); }); 

Мой PHP-код

 <?php $str_json = file_get_contents('php://input'); //($_POST doesn't work here) $response = json_decode($str_json, true); // decoding received JSON to array $subject = $response[0]; $from = $response[1]; $message = $response[2]; $to = "lubycha@gmail.com"; $subject = $_POST['subject']; $from = $_POST['email']; $message = $_POST['message']; $headers = "Content-Type: text/html; charset=UTF-8"; mail($to,$subject,$message,$headers); ?> при <?php $str_json = file_get_contents('php://input'); //($_POST doesn't work here) $response = json_decode($str_json, true); // decoding received JSON to array $subject = $response[0]; $from = $response[1]; $message = $response[2]; $to = "lubycha@gmail.com"; $subject = $_POST['subject']; $from = $_POST['email']; $message = $_POST['message']; $headers = "Content-Type: text/html; charset=UTF-8"; mail($to,$subject,$message,$headers); ?> 

Я знаю, что уже задан подобный вопрос, но ответы мне не помогли.

Спасибо за помощь.

Я смог получить объект json и проанализировать его на стороне php. Некоторые переменные могут быть названы разными, отчасти потому, что некоторые из них являются предварительно написанным кодом. Вот шаги, которые я предпринял.

Структура папок

 js/script.js php/get_data.php index.html 

Index.html базовую форму.

 <div id="feedback_panel" class="panel panel-default"> <form id="feedbackform" name="feedbackform" method="post"> <div class="form-group" id="email_wrapper" data-toggle="popover" data-container="body" data-placement="right"> <label class="control-label" for="email">E-mail:</label> <input type="email" class="form-control" id="email" name="email" placeholder="email@example.com" required> <span class="help-block"> </span> </div> <div class="form-group" id="subject_wrapper" data-toggle="popover" data-container="body" data-placement="right"> <label class="control-label" for="subject">Subject:</label> <input type="text" class="form-control" id="subject" name="subject" placeholder="Subject" required> <span class="help-block"> </span> </div> <div class="form-group" id="description_wrapper" data-toggle="popover" data-container="body" data-placement="right"> <label class="control-label" for="message">message:</label> <textarea type="text" class="form-control" id="message" name="message" placeholder="message." required></textarea> <span class="help-block"> </span> </div> <button type="submit" id="feedback_submit" class="btn btn-success">Submit</button> </form> </div> 

script.js после отправки, сбора данных и установки их на объект и отправки на php через ajax.

 $(function() { // process the form $('#feedbackform').submit(function(event) { // get the form data - obj that will POSTED to get_data.php var formData = { 'email' : $('#email').val(), 'subject' : $('#subject').val(), 'message' : $('#message').val() }; // process the forum $.ajax({ type : 'POST', // define the type of HTTP verb we want to use (POST for our form) url : 'php/get_data.php', // the url where we want to POST data : formData, // our data object dataType : 'json', // what type of data do we expect back from the server encode : true }) // using the done promise callback .done(function(data) { // log data to the console so we can see if ( ! data.success) { console.log(data); } else { console.log(data); } }); // stop the form from submitting the normal way and refreshing the page event.preventDefault(); }); }); 

get_data.php получает данные из script.js, выполняет некоторые проверки, а затем отправляет и отправляет электронное письмо.

 <?php $errors = array(); // array to hold validation errors $data = array(); // array to pass back data // validate the variables ====================================================== // if any of these variables don't exist, add an error to our $errors array $email; $subject; $message; //check to see if the data exist, else write an error message, function check_data(){ $user_inputs = array(); if (empty($_POST['email'])){ $errors['email'] = 'Email is required.'; return false; }else{ $email = $_POST['email']; array_push($user_inputs,$email); } if (empty($_POST['subject'])){ $errors['subject'] = 'subject is required.'; return false; }else{ $subject = $_POST['subject']; array_push($user_inputs,$subject); } if (empty($_POST['message'])){ $errors['message'] = 'message is required.'; return false; }else{ $message = $_POST['message']; array_push($user_inputs,$message); } return $user_inputs; } //getting array of data from check_data $verify_data = check_data(); // return a response =========================================================== // if there are any errors in our errors array, return a success boolean of false if ( ! empty($errors)) { // if there are items in our errors array, return those errors $data['success'] = false; $data['errors'] = $errors; echo json_encode($data); } else { // show a message of success and provide a true success variable $data['success'] = $verify_data; $data['message'] = 'Success!'; //if everything is good, sent an email. if($verify_data != false){ send_email($verify_data); } } function send_email($info_data){ // person who it going $to = 'Email, Some <some_email@mailinator.com>'; //subject of the email $subject = $info_data[1]; $result = str_replace(' ', '&nbsp;', $info_data[2]); $result = nl2br($result); $result = wordwrap($result, 70, "\r\n"); //body of the email. $message = "<html><body>"; $message .= "<p style = 'width: 400px;'>" . $result . "</p>"; $message .= "<br/>"; $message .= "</body></html>"; $headers = "From: Email, Some <some_email@mailinator.com>" . "\r\n" . 'Reply-To: '. $info_data[0] . "\r\n" ."X-Mailer: PHP/" . phpversion(); $headers .= "MIME-Version: 1.0\r\n"; $headers .= "Content-Type: text/html; charset=UTF-8"; //sent mail: check to see if it was sent. if(mail($to, $subject, $message, $headers)){ $data["went"] = "went"; $data['message'] = 'Success!'; }else{ $data["went"] = "didn't go"; $data['message'] = 'Sorry!'; } // echo the log echo json_encode($data); } ?> по <?php $errors = array(); // array to hold validation errors $data = array(); // array to pass back data // validate the variables ====================================================== // if any of these variables don't exist, add an error to our $errors array $email; $subject; $message; //check to see if the data exist, else write an error message, function check_data(){ $user_inputs = array(); if (empty($_POST['email'])){ $errors['email'] = 'Email is required.'; return false; }else{ $email = $_POST['email']; array_push($user_inputs,$email); } if (empty($_POST['subject'])){ $errors['subject'] = 'subject is required.'; return false; }else{ $subject = $_POST['subject']; array_push($user_inputs,$subject); } if (empty($_POST['message'])){ $errors['message'] = 'message is required.'; return false; }else{ $message = $_POST['message']; array_push($user_inputs,$message); } return $user_inputs; } //getting array of data from check_data $verify_data = check_data(); // return a response =========================================================== // if there are any errors in our errors array, return a success boolean of false if ( ! empty($errors)) { // if there are items in our errors array, return those errors $data['success'] = false; $data['errors'] = $errors; echo json_encode($data); } else { // show a message of success and provide a true success variable $data['success'] = $verify_data; $data['message'] = 'Success!'; //if everything is good, sent an email. if($verify_data != false){ send_email($verify_data); } } function send_email($info_data){ // person who it going $to = 'Email, Some <some_email@mailinator.com>'; //subject of the email $subject = $info_data[1]; $result = str_replace(' ', '&nbsp;', $info_data[2]); $result = nl2br($result); $result = wordwrap($result, 70, "\r\n"); //body of the email. $message = "<html><body>"; $message .= "<p style = 'width: 400px;'>" . $result . "</p>"; $message .= "<br/>"; $message .= "</body></html>"; $headers = "From: Email, Some <some_email@mailinator.com>" . "\r\n" . 'Reply-To: '. $info_data[0] . "\r\n" ."X-Mailer: PHP/" . phpversion(); $headers .= "MIME-Version: 1.0\r\n"; $headers .= "Content-Type: text/html; charset=UTF-8"; //sent mail: check to see if it was sent. if(mail($to, $subject, $message, $headers)){ $data["went"] = "went"; $data['message'] = 'Success!'; }else{ $data["went"] = "didn't go"; $data['message'] = 'Sorry!'; } // echo the log echo json_encode($data); } ?> 

много, чтобы покрыть, дайте мне знать, если у вас есть какие-либо вопросы. Я буду рад ответить.