2012-04-19 2 views
7

У меня есть главная страница HTML, в которой используется пользовательский интерфейс jQuery mobile. Где-то на странице HTML У меня есть форма, которая является чем-то вроде формы голосования:Как отправить форму на странице jQuery Mobile?

<form name = "vote" action = "logicDB.php" method = "post"> 
        <center> 
         <h3>Watch our videos above and share your opinion which manufacturer produces the best sport sedans</h3>     
         <fieldset style = "width:60%;"> 
          <legend>Choose a car:</legend> 
          <input type = "radio" name = "rc1" id = "radio-choice-1" value = "Audi"/> 
          <input type = "radio" name = "rc1" id = "radio-choice-2" value = "BMW"/> 
          <input type = "radio" name = "rc1" id = "radio-choice-3" value = "Mercedes"/>   
         </fieldset>     
         <input value = "SUBMIT" type = "submit" /> 
        </center> 
</form> 

Параметра Действия формы вызова моего файла PHP, который имеет эту логику:

<?php 
$connection = mysql_connect("localhost","root","myPassword"); 
if(!$connection){ die('Could not connect: ' . mysql_error()); } 

mysql_select_db("mydatabase", $connection); 

if ($_POST['rc1'] == 'Audi') 
{ 
    mysql_query(" 
    UPDATE carvote 
    SET votes = votes + 1 
    WHERE Brands = 'Audi' 
    ",$connection); 

    echo "success Audi within if"; 
} 

if ($_POST['rc1'] == 'BMW') 
{ 
    mysql_query(" 
    UPDATE carvote 
    SET votes = votes + 1 
    WHERE Brands = 'BMW' 
    ",$connection); 

    echo "success BMW within if"; 
} 

if ($_POST['rc1'] == 'Mercedes') 
{ 
    mysql_query(" 
    UPDATE carvote 
    SET votes = votes + 1 
    WHERE Brands = 'Mercedes' 
    ",$connection); 

    echo "success Mercedes within if"; 
} 
mysql_close($connection); 
?> 

У меня есть база данных, созданная на моем локальном сервере WAMP, и этот PHP-код записывается в базу данных в зависимости от того, какой радиоприемник выбран и отправлен из формы. Эти эхо-сигналы в php никогда не достигаются.

Проблема в том, что когда я нажимаю кнопку «Отправить», я получаю белый экран с надписью «undefined» в верхнем левом углу, после чего в базу данных ничего не записывается. Я обнаружил, что если я удалю строку, которая вызывает мобильный jQuery вверху с главной страницы html , все работает нормально, и данные записываются в базу данных (достигнуты эхо-сигналы в php). Кажется, что jQuery mobile несовместим с моим PHP-кодом. Как мне это исправить? Спасибо заранее!

ОБНОВЛЕНО (я сделал это работа): Вот что я изменил в виде:

<form id = "ContactForm" onsubmit="return submitForm();"> 

файл PHP с базой данных остается неизменным. Кроме того, я также добавил код Ajax:

function submitForm() 
    { 
     $.ajax({type:'POST', url: 'logicDB.php', data:$('#ContactForm').serialize(), success: function(response) 
     { 
      $('#ContactForm').find('.form_result').html(response); 
     }}); 
     return false; 
    } 

Для summerize: Jquery Мобильные страницы (страниц внутри DIV с данными-роли = «страницы») может быть занесена только с помощью AJAX. Это не будет работать иначе. Я изменю тему на свой вопрос, чтобы больше людей могли ее достичь.

+0

Ищите инструкцию 'echo' /' print_r' в вашем файле 'logicDB.php', кроме того, что вы указали выше. –

+0

Я не вижу ваш jQuery? Без этого мы не можем видеть, что происходит. –

+0

Привет, Bibhas, у меня нет этого в моем php-файле.Я отредактирую свой вопрос с помощью всего PHP-кода. –

ответ

6

Я скопировал ваш код и вставил jquery mobile и сделал пару небольших изменений. Я получаю данные в виде сообщений. Я запускал его через команды эха, а не вставки БД.

Взгляните на следующие:

вызова на Jquery Mobile:

<!DOCTYPE html> 
<html> 
    <head> 
    <title>My Page</title> 
    <meta name="viewport" content="width=device-width, initial-scale=1"> 
    <link rel="stylesheet" href="http://code.jquery.com/mobile/1.1.0/jquery.mobile-1.1.0.min.css" /> 
    <script src="http://code.jquery.com/jquery-1.7.1.min.js"></script> 
    <script src="http://code.jquery.com/mobile/1.1.0/jquery.mobile-1.1.0.min.js"></script> 
</head> 

отдыхатъ index.php страницы:

<div data-role="page"> 
<center> 
    <h3>Watch our videos above and share your opinion which manufacturer produces the best sport sedans</h3>     
    <form name="vote" action="logicDB.php" method="post" data-ajax="false"> 
     <fieldset style = "width:60%;" data-role="controlgroup"> 
      <legend>Choose a car:</legend> 
      <input type = "radio" name="rc1" id = "radio-choice-1" value = "Audi"/> 
      <label for="radio-choice-1">Audi</label> 

      <input type = "radio" name="rc1" id = "radio-choice-2" value = "BMW"/> 
      <label for="radio-choice-2">BMW</label> 

      <input type = "radio" name="rc1" id = "radio-choice-3" value = "Mercedes"/> 
      <label for="radio-choice-3">Mercedes</label>        
     </fieldset>     
     <input value = "SUBMIT" type = "submit" /> 
    </form> 
</center> 

И, наконец, logicDB. php

if ($_POST['rc1'] == 'Audi') { 
echo "Audi <br>"; 
} 
if ($_POST['rc1'] == 'BMW') { 
echo "BMW <br>"; 
} 
if ($_POST['rc1'] == 'Mercedes') { 
echo "Mercedes <br>"; 
} 

Первичные изменения были к

<fieldset style = "width:60%;" data-role="controlgroup"> 

и data-ajax="false" я уже ранее.

Посмотрите, работает ли это для вас.

+0

Я уже пробовал данные ajax = «false», и я снова получил белый экран без неопределенного слова (пустой экран), и ничего не записывается в базу данных снова ... Я где-то читал, что jQuery Mobile перенаправляет на свои собственные страницы и что я должен включить что-то еще в свой php-код, но я не знаю, что ... Спасибо за ваш ответ, так или иначе. –

+0

Быстрое предложение за пределами моего последнего ответа: измените операторы 'if' на' switch', 'case' синтаксис. Небольшие проверки, подобные вашим, на самом деле не имеют значения, но в больших проверках 'switch',' case' работают быстрее и завершают работу после успеха, а затем циклически перебирают все 'if', является ли первое правильным или нет. – jnthnjns

+1

Привет, Асок, спасибо за ваше предложение. Однако я нашел решение своей проблемы. Я отправил форму с помощью AJAX и удалил мир данных кода - ajax = «false». Я отредактирую свой вопрос с кодом, который я изменил и добавил. –

Смежные вопросы