Почему при отправке формы в jQuery Mobile на экране отображается значение «undefined»? - PullRequest
7 голосов
/ 17 октября 2011

Это моя страница contactus.html.Я отправляю на страницу php на сервере, которая должна принять информацию и отправить электронное письмо с благодарностью.Когда я отправляю форму, все, что я вижу, это «неопределенное» на экране, хотя я могу получить письмо.

<!DOCTYPE html> 
<html> 
    <head> 
    <title>Contact Us</title> 
    <link rel="stylesheet" href="css/latestjquerymobile.css" />
    <link rel="stylesheet" type="text/css" href="css/jquery.mobile.simpledialog.min.css" />

    <script type="text/javascript" src="js/jquery-1.6.1.min.js"></script>
    <script type="text/javascript" src="js/latestjquerymobile.js"></script>
    <script type="text/javascript" src="js/jquery.mobile.simpledialog.min.js"></script>


    <script type="text/javascript">
    $(document).ready(function() { 

                     $("#contactus").submit(function(event) {

                     alert("page submitted");


 })

});
</script>
</head> 
<body> 

<div data-role="page" data-theme="e" id="contactus">

    <div data-role="header" data-position="fixed">
        <h1>Contact Us</h1>
        <a href="home.html" data-icon="back" class="ui-btn-left" data-ajax="false">Back</a>
        <a href="home.html" data-icon="home" class="ui-btn-right" data-ajax="false">Home</a>
    </div><!-- /header -->

    <div data-role="content">   

    <div align="center">





    <form action="http://testsite.com/contactus.php" name="contactus" id="contactus" method="post">


    <fieldset>



        <div data-role="fieldcontain">

        <label for="name"> Name:</label>    
        <input id="name" name="name" type="text" />

        <label for="email">Email:</label>       
        <input id="email" name="email" type="text" />


        <label for="contact">Contact:</label>   
        <input id="contact" name="contact" type="text" />


        <label for="message">Message:</label>       
        <textarea rows="4" cols="50" id="message" name="message"></textarea>

        <br />
        <button type="submit" name="submit" value="submit-value">Send</button>


        </fieldset>
    </div>
    </form>




     <div><br><br>


      <a href="http://www.facebook.com/Apsession"><img src="images/facebook.png" border="0" /></a>

    <a href="http://twitter.com/ApsessionMobile"><img src="images/twitter.png" border="0" /></a>


     </div>




    </div>

    </div><!-- /content -->

</div><!-- /page -->

</body>
</html>

Это код для contactus.php на сервере

<?php 
$ToEmail = 'test@testemail.com'; 
$EmailSubject = 'Contact Form Submission from testsite.com'; 
$mailheader = "From: ".$_POST["email"]."\r\n"; 
$mailheader .= "Reply-To: ".$_POST["email"]."\r\n"; 
$mailheader .= "Content-type: text/html; charset=iso-8859-1\r\n"; 
$MESSAGE_BODY = "Name: ".$_POST["name"]."<br>"; 
$MESSAGE_BODY .= "Email: ".$_POST["email"]."<br>"; 
$MESSAGE_BODY .= "Contact: ".$_POST["contact"]."<br>";
$MESSAGE_BODY .= "Message: ".$_POST["message"]."<br>"; 
mail($ToEmail, $EmailSubject, $MESSAGE_BODY, $mailheader) or die ("Failure"); 
?>
<html>
<body>

THANK YOU

</body>
</html>

Ответы [ 3 ]

4 голосов
/ 17 октября 2011

Я не уверен, почему вы видите undefined, но я заметил, что вы не запрещаете действие отправки по умолчанию.поэтому ваша страница будет по-прежнему отправляться, а не выполняться JS.

Вам необходимо выполнить несколько действий:

  1. Запретить действие по умолчанию (то есть отправку)
  2. Сериализуйте данные формы и отправьте их через ajax.

Так что в коде это будет выглядеть примерно так:

$(document).ready(function() { 
    //Cache DOM reference
    var form = $("#contactus");

    form.submit(function(event) {
        //Prevent the form from regular (non-js) submission
        event.preventDefault();

        //Serialize your data, using jQuery to make it easer
        var data = form.serialize();

        //Submit via ajax
        $.post(
          form.attr('action'),
          data,
          function(response) {
            //You should modify your PHP to return a success or error code, then
            //handle appropriately here - eg if (response === 'success") {...
          }    
        );

     });

});
4 голосов
/ 10 января 2012

Причина, по которой вы получаете неопределенное значение, заключается в том, что вы публикуете недопустимую мобильную страницу jQuery.Поэтому убедитесь, что сервер возвращает действительную HTML-страницу jquery для мобильных устройств.

  1. Создайте свою мобильную форму jquery

  2. Установите атрибут action="/mobile.html" и method="post" (или получить)

  3. Затем убедитесь, что страница mobile.html (или как вы хотите ее называть) возвращает действительную HTML-страницу jQuery для мобильных устройств.

Если вы не знаете, что такое действительная HTML-страница jquery для мобильных устройств, посетите веб-сайт jquery mobile .

0 голосов
/ 17 октября 2011
<script type="text/javascript">
    $(document).ready(function() { 

                     $("#contactus").submit(function(event) {

                     alert("page submitted");


 })

});
</script>

Вам не нужно использовать вышеуказанное кодирование JS. Просто используйте родную кнопку Отправить. И проверьте следующую ссылку

http://jquerymobile.com/test/docs/forms/forms-sample.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...