2012-04-19 5 views
7

私はjQueryモバイルのUIを使用しているHTMLのメインページを持っています。どこか私は投票フォームのようなものであるのフォームを持っているHTMLページ上:私が持っているjQuery Mobileページ内でフォームを送信するにはどうすればいいですか?

<?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); 
?> 

<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> 

フォームのactionパラメータは、このロジックを持っている私のPHPファイルを呼び出しています私のWAMP localhostサーバーで作成されたデータベースで、このPHPコードは、フォームから選択して送信するラジオオプションに応じてデータベースに書き込みます。 PHPのこれらのエコーは決して到達しません。

問題は、送信をクリックすると、左上隅に「未定義」という白い画面が表示され、その後は何もデータベースに書き込まれないということです。私は、htmlメインページからトップにjQueryモバイルを呼び出す行を削除すると、すべてが正常に動作しており、データがデータベースに書き込まれている(PHPのエコーに達している)ことがわかりました。 jQuery Mobileは私のPHPコードと互換性がないようです。私はこれをどのように修正すべきですか? ありがとうございます!

UPDATED

(私はそれが動作製): ここでは、私は、フォームに変更するものである:

<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要素内のページ)がONLY AJAX経由submitedすることができます。そうでなければ動作しません。 トピックを私の質問に変更し、より多くの人々がそれに到達できるようにします。

+0

上記で提供したものとは別に、 'logicDB.php'ファイルで' echo'/'print_r'文を探します。 –

+0

jQueryは表示されませんか?これがなければ、何が起こっているのかわかりません。 –

+0

こんにちはBibhas、私はこれが私のPHPファイルに含まれていません。私はPHPコード全体で私の質問を編集します。 –

答えて

6

コードをコピーしてjquery mobileを挿入し、マイナーチェンジした後、データがポストされています。私はエコーコマンドではなく、DBの挿入を介してそれを実行しました。 jQueryのモバイル上の

コール:index.phpページの

<!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> 

レクリエーション:

<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

私はすでにdata-ajax = "false"を試していて、undefined(空白の画面)のない白い画面が再び表示され、データベースには何も書き込まれません... jQuery Mobileが独自のページにリダイレクトすると私は私のPHPコードに他の何かを含める必要がありますが、私は何を知りません...とにかくあなたの応答のためにありがとう。 –

+0

私の最近の答えを超えたクイックな提案: 'if'ステートメントを' switch'、 'case'構文に変更してください。あなたのような小さな小切手は本当に重要ではありませんが、大規模な小切手では 'switch'、' case'は速く実行され、成功した後は終了します。 – jnthnjns

+1

こんにちはアソーク、あなたの提案に感謝します。しかし、私は自分の問題を解決しました。私はAJAXにフォームを提出し、コードデータの平和を削除しました。-ajax = "false"変更して追加したコードで質問を編集します。 –

関連する問題