2012-04-19 36 views
7

Tôi có một trang HTML chính đang sử dụng giao diện người dùng jQuery của điện thoại di động. Một nơi nào đó trên trang HTML Tôi có một hình thức mà là một cái gì đó giống như một hình thức bỏ phiếu:Làm cách nào để gửi biểu mẫu bên trong trang 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> 

Tham số hành động của các hình thức đang kêu gọi tập tin php của tôi trong đó có logic này:

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

Tôi có một cơ sở dữ liệu được tạo trên máy chủ WAMP localhost của tôi và mã php này được ghi vào cơ sở dữ liệu tùy thuộc vào tùy chọn radio nào được chọn và được gửi từ biểu mẫu. Những tiếng vang trong php không bao giờ đạt được.

Vấn đề là khi tôi nhấp gửi, tôi nhận được màn hình trắng có nội dung "không xác định" ở góc trên cùng bên trái và sau đó không có gì được ghi vào cơ sở dữ liệu. Tôi đã tìm thấy rằng nếu tôi loại bỏ các dòng mà các cuộc gọi jQuery điện thoại di động ở đầu từ trang chính html tất cả mọi thứ đang làm việc tốt và dữ liệu được ghi vào cơ sở dữ liệu (tiếng vang trong php đạt được). Dường như điện thoại di động jQuery không tương thích với mã php của tôi. Làm thế nào tôi nên sửa lỗi này? Cảm ơn bạn trước!

CẬP NHẬT (Tôi đã làm cho nó làm việc): Đây là những gì tôi đã thay đổi theo hình thức:

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

Các tập tin php với cơ sở dữ liệu vẫn giữ nguyên. Ngoài ra tôi cũng đã thêm một mã Ajax:

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

Để summerize: trang jQuery Mobile (trang bên trong div với một dữ liệu-role = "trang") có thể được đệ trình CHỈ qua AJAX. Nó sẽ không hoạt động nếu không. Tôi sẽ thay đổi chủ đề cho câu hỏi của mình, để nhiều người hơn có thể tiếp cận nó.

+0

Tìm câu lệnh 'echo' /' print_r' trong tệp 'logicDB.php' của bạn, ngoài những gì bạn đã cung cấp ở trên. –

+0

Tôi không thấy jQuery của bạn? Nếu không có điều này chúng ta không thể thấy những gì đang xảy ra. –

+0

Xin chào Bibhas, tôi không có trong tập tin php của mình.Tôi sẽ chỉnh sửa câu hỏi của tôi với toàn bộ mã php. –

Trả lời

6

Tôi đã sao chép mã của bạn và chèn jquery di động và sau khi thực hiện một vài thay đổi nhỏ, tôi nhận được dữ liệu được đăng. Tôi chạy nó thông qua lệnh echo, không chèn DB.

Hãy xem ví dụ sau:

Gọi về 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> 

Phần còn lại của trang 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> 

Và cuối cùng là logicDB. php

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

Những thay đổi chủ yếu là để các

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

data-ajax="false" tôi đã đề cập trước đó.

Xem điều đó có phù hợp với bạn không.

+0

Tôi đã thử data-ajax = "false" và tôi nhận lại màn hình trắng mà không có từ không xác định (màn hình trống), và không có gì được ghi vào cơ sở dữ liệu nữa ... Tôi đọc ở đâu đó mà jQuery Mobile chuyển hướng đến các trang riêng của nó và rằng tôi nên bao gồm một cái gì đó khác trong mã php của tôi, nhưng tôi không biết những gì ... Cảm ơn bạn đã trả lời của bạn, anyway. –

+0

Đề xuất nhanh ngoài câu trả lời gần đây nhất của tôi: Thay đổi câu lệnh 'if' thành' switch', 'case'. Kiểm tra nhỏ như của bạn không thực sự quan trọng nhưng trong kiểm tra lớn hơn 'chuyển',' trường hợp' chạy nhanh hơn và bỏ sau khi thành công, thay vì sau đó lặp qua mỗi 'if' cho dù người đầu tiên là chính xác hay không. – jnthnjns

+1

Xin chào Asok, cảm ơn bạn đã đề xuất của bạn. Tuy nhiên, tôi đã tìm ra giải pháp cho vấn đề của mình. Tôi đã đệ trình biểu mẫu bằng AJAX và loại bỏ sự an toàn của mã dữ liệu-ajax = "false". Tôi sẽ chỉnh sửa câu hỏi của mình bằng mã mà tôi đã thay đổi và thêm vào. –

Các vấn đề liên quan