Использование php-формы внутри телефонного разговора

Я попросил прежде, чтобы помочь получить мою php-форму, работающую внутри телефонной заставки ipa. Я сделал то, что мне сказали, и все работает отлично, даже внутри ipa. Только проблема заключается в том, что я получаю это предупреждение прямо в тот момент, когда загружается страница, очевидно, она должна появляться, когда клиент забывает заполнить требуемое поле.

Вот что я сделал:

ФОРМА в contact.html

<form action="http://mobile.alicante-intermedia.com/submit_contact.php" method="get"> <div class="form-element"> <label for="txtfullname">Firstname</label> <input id="txtfullname" name="FirstName" type="text" placeholder="required" required /> </div> <div class="form-element"> <label for="txtemail">Lastname</label> <input id="txtemail" name="LastName" type="text" placeholder="required" required /> </div> <div class="form-element"> <label for="txtcontact">Email</label> <input id="txtcontact" name="Email" type="email" placeholder="optional" /> </div> <div class="form-element"> <label for="txtmessage">Message</label> <textarea id="txtmessage" name="MessageText" placeholder="required" rows="5" required ></textarea> </div> <input type="button" onclick="submit()" value="submit contact"/> </form> 

Затем я создал файл jquery_form.js, который загружается только внутри файла conatct.html

 $.post('http://mobile.alicante-intermedia.com/submit_contact.php', { // These are the names of the form values FirstName: $('#FirstName_input').val(), LastName: $('#LastName_input').val(), Email: $('#Email_input').val(), MessageText: $('#MessageText_input').val() // HTML function }, function (html) { // Place the HTML in a astring var response=html; // PHP was done and email sent if (response=="success") { alert("Message sent!"); } else { // Error postback alert("Please fill all fields!"); return false; } }); 

И php выглядит так:

 <?php // VARS $FirstName=$_GET["FirstName"]; $LastName=$_GET["LastName"]; $Email=$_GET["Email"]; $MessageText=$_GET["MessageText"]; $Headers = "From:" . $Email; //VALIDATION if( $FirstName=="" || $LastName=="" || $Email=="" || $MessageText=="" ) { echo "Error"; } else { mail("myemail@email.com","mobile app message",$MessageText, $Headers); echo "Success"; } ?> - <?php // VARS $FirstName=$_GET["FirstName"]; $LastName=$_GET["LastName"]; $Email=$_GET["Email"]; $MessageText=$_GET["MessageText"]; $Headers = "From:" . $Email; //VALIDATION if( $FirstName=="" || $LastName=="" || $Email=="" || $MessageText=="" ) { echo "Error"; } else { mail("myemail@email.com","mobile app message",$MessageText, $Headers); echo "Success"; } ?> 

Все работает отлично, за исключением экрана предупреждения. Кто-нибудь здесь, у кого есть идея, что пошло не так?

Solutions Collecting From Web of "Использование php-формы внутри телефонного разговора"

Ваш JavaScript-код «голый», не завернут в какую-либо функцию или не привязан к любому обработчику события, и поэтому выполняется, как только он будет загружен, поэтому он сразу же отправляет пустую форму, когда сначала разбирается скрипт jQuery.

Поместите его в обработчик события onclick для кнопки отправки:

 // When the document has loaded... $(document).ready(function() { // Bind this action as a function to be executed when the button is clicked... $('input[type="button"][value="submit contact"]').click(function() { $.post('http://mobile.alicante-intermedia.com/submit_contact.php', { // These are the names of the form values // EDIT: You have the wrong ids on these... FirstName: $('#txtfullname').val(), LastName: $('#txtemail').val(), Email: $('#txtcontact').val(), MessageText: $('#txtmessage').val() // HTML function }, function (html) { // Place the HTML in a astring var response=html; // PHP was done and email sent if (response=="success") { alert("Message sent!"); } else { // Error postback alert("Please fill all fields!"); return false; } }); }); }); 

Поскольку он связан в коде JavaScript, удалите onclick из кнопки в вашей разметке:

 <input type="button" value="submit contact"/> 

Редактировать:

PHP, который вы ищете, ищет значения в $_GET , но вы отправили их из jQuery. Посмотрите вместо этого в $_POST .

 $FirstName=$_POST["FirstName"]; $LastName=$_POST["LastName"]; $Email=$_POST["Email"]; $MessageText=$_POST["MessageText"];