1

私はここで多くの同様の質問を見ますが、私が経験しているものとまったく同じものは何もありません。

デスクトップバージョンで正常に機能する簡単な連絡先ページがサイトにありますが、jQuery mobileを使用してモバイルバージョンをセットアップすると、ページが投稿されたときにundefinedが返されます。

以下は、phpが後に続くフォームです。

<html>
<head>
<title>John's Website | Contact Me</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<script type="text/javascript" src="../js/jquery.js"></script>
<script type="text/javascript" src="../js/jquery.mobile-1.1.0.min.js"></script>
<script type="text/javascript" src="../js/menu.js"></script>
<LINK REL="SHORTCUT ICON" HREF="../favicon.ico"> 
</head>
<body>
<div data-role="page">
<h2>Fill out the form below to contact me.</h2>
<form action="contact.php" method="post">
<label for="firstName">First Name:</label>
<input type="text" id="firstName" name="firstName" size="40" /><br />
<label for="lastName">Last Name:</label>
<input type="text" id="lastName" name="lastName" size="40" /><br />
<label for="userEmail">Your Email:</label>
<input type="text" id="userEmail" name="userEmail" size="40" /><br />
<label for="message">Message:</label>
<textarea id="message" name="message" cols="30" rows="5"></textarea><br />
<input data-role="none" type="submit" value="Submit"></input>
<input data-role="none" type="reset" value="Reset"></input>
</form> 
</div>
</body>
</html>

とPHP

<?php
$host="localhost"; // Host name 
$username="Idont"; // Mysql username 
$password="thinkso"; // Mysql password 
$db_name="john"; // Database name 
$tbl_name="contact"; // Table name

//connect
mysql_connect("$host", "$username", "$password")or die("cannot connect"); 
mysql_select_db("$db_name")or die("cannot select DB");

//gather vars and sanitize input
$first_name = htmlentities($_POST['firstName']);
$last_name = htmlentities($_POST['lastName']);
$email = htmlentities($_POST['userEmail']);
$message = htmlentities($_POST['message']);
$date_stamp = date("Y-m-d h:i:s");

$first_name = mysql_real_escape_string($_POST['firstName']);
$last_name = mysql_real_escape_string($_POST['lastName']);
$email = mysql_real_escape_string($_POST['userEmail']);
$message = mysql_real_escape_string($_POST['message']);


if(empty($_POST['firstName']) && empty($_POST['lastName']) &&
empty($_POST['userEmail']) && empty($_POST['message'])){
echo 'You did not fill out all fields. Please go back and enter all info.';
}

//write contents to db.
$sql = "INSERT INTO $tbl_name (firstName, lastName, email, date, message) 
VALUES ('$first_name', '$last_name', '$email', '$date_stamp', '$message')";

if(mysql_query($sql)){
$content = "Your message has been sent. /n Click <a href="index.php">here</a> to go
back to the home page.";
} else {
$content = mysql_error() . $date_stamp . 'Unable to send your message. Try again
later.';
}
?>

<html>
<head>
<title>John's Website | Contact Me</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<script type="text/javascript" src="../js/jquery.js"></script>
<script type="text/javascript" src="../js/jquery.mobile-1.1.0.min.js"></script>
<LINK href="../js/jquery.mobile-1.1.0.min.css" rel="stylesheet" type="text/css">
<LINK REL="SHORTCUT ICON" HREF="../favicon.ico"> 
</head>
<body>
<div data-role="page">

<div data-role="header">its loaded</div>
<div data-role="content"><?php echo $content; ?></div>
</div>
</body>
</html>

PDOとよりOOスタイルを使用してコードを作り直す予定ですが、ページは機能するはずです。JQMも初めて使うので、足りないと思います。

4

3 に答える 3

1

私はこれを試しました、そしてそれは働きます。私の場合、target = "_ blank"を追加すると、新しいウィンドウにポップアップ表示され、未定義のエラーが発生しなくなりました。これは私のコードがどのように見えるかであり、ChromeforAndroidで問題なく動作します。エラーコードを含め、PHPスクリプトが生成したHTMLを表示する新しいウィンドウが必要です。

<form name="contactform" method="post" action="http://myphpcontactform.php" target="_blank">
              

于 2015-04-21T20:14:39.537 に答える
0

ページの読み込みでAJAX機能をオフにしたところ、思ったとおりに機能するようになりました。別の理由になりましたが、これは今のところ機能します。私は滑らかなトランジション効果を失いますが、まあ。

これを各ページの頭に貼り付けるだけです

$(document).bind("mobileinit", function(){
        $.mobile.ajaxenabled = false;
    });
于 2012-08-28T04:13:24.380 に答える
-1

最初に$_POSTを確認しますが、SQLも実行します。実行を停止するか、これを停止する条件はありません。

これはあなたが持っているものです:

if( empty($_POST['firstName']) && 
    empty($_POST['lastName']) &&
    empty($_POST['userEmail']) && 
    empty($_POST['message'])) {
    echo 'You did not fill out all fields. Please go back and enter all info.';
}
// continue to execute the script ( SQL Below )

これは提案です:

if( empty($_POST['firstName']) && 
    empty($_POST['lastName']) &&
    empty($_POST['userEmail']) && 
    empty($_POST['message'])) {

    // use $content instead of echo
    $content = 'You did not fill out all fields. Please go back and enter all info.';
}
// Add else condition here
else {
    //write contents to db.
    $sql = "INSERT INTO $tbl_name (firstName, lastName, email, date, message) 
    VALUES ('$first_name', '$last_name', '$email', '$date_stamp', '$message')";

    if(mysql_query($sql)) {
        $content = "Your message has been sent. /n Click <a href="index.php">here</a> to go
back to the home page.";
    } else {
        $content = mysql_error() . $date_stamp . 'Unable to send your message. Try again
later.';
    }
}

あなたが行うことができる他の最適化がありますが、うまくいけば、これはあなたの問題を解決します。

また、このプラグインでGoogle Chromeを使用して、モバイルデバイスを模倣することもできます。

次に、Chrome開発者ツールを開いて、デバッグを楽しみましょう。

于 2012-06-17T04:48:39.763 に答える