2

次の2つのリンクでコードを確認しました:http: //pastebin.com/iUd22CRY http://www.jensbits.com/2009/10/04/jquery-ajax-and-jquery-post-form-submit- examples-with-php

コード自体ではすべてがかなり明確に見えますが、どのコードブロックがどのファイル名に関連付けられているかについての完全なストーリーを理解することはできません。基本的に、私はPDOオブジェクトとの対話にjQueryのpost関数を使用するための最新のガイドを見つけようとしていますが、それは非常にうまくいきませんでした。

次に行う予定は、ファイル名がどうあるべきかわからない場合に、w3schoolsの例を変換/更新することです。基本的に、ペーストビンを使用すると、コードの最初の3つの段落がどこにあるかはわかっていると思いますが、JavaScriptを最後の近くに配置する場所がわかりません。しかし、私がスラムに入る前は、誰かが私のコードを調べてくれることを望んでいました。問題がわかりますか?

-編集-Chromeのコンソール(ctrl+shift+jブラウザ内)でエラーに気づきました:http:Uncaught SyntaxError: Unexpected token ; encode.js:17 //ajform.99k.org/issues/semicolon/またはUncaught ReferenceError: $ is not defined encode.js:1 http://ajform.99k.org/issues/orderofappearance/

ファイルシステムの構造:

webroot/sitename/index.php; webroot/sitename/process_form.php; webroot/sitename/js/jquery-1.8.2.js;webroot/sitename/js/encode.js

index.php:

<!DOCTYPE html>
<html>
<head>
  <title>Tmp homepage</title>
  <script type="text/javascript" src="js/encode.js"></script>
  <script type="text/javascript" src="js/jquery-1.8.2.min.js"></script>
</head>

<body>
<form id="ajform">
    <fieldset>
        <legend>jQuery.post Form Submit example</legend>
        <p>
            <label for="name">Name:</label></br />
            <input id="name" type="text" name="name" />
        </p>
        <p>
            <label for="email">email:</label></br />
            <input id="email" type="text" name="email" />
        </p>
        <p>
            <input type="submit" value="Submit" />
        </p>
    </fieldset>
</form>
<div id="post"></div>
</body>

</html>

encode.js:

$(document).ready(
  $(function(){
      $("#ajform").submit(function(e){    
         e.preventDefault();  

          $.post("../process_form.php", $("#ajform").serialize(),
          function(data){
              if(data.email_check == 'invalid'){

                      $("#post").html("<div class='errorMessage'>Sorry " + data.name + ", " + data.email + " is NOT a valid e-mail address. Try again.</div>");
              } else {
                  $("#post").html("<div class='successMessage'>" + data.email + " is a valid e-mail address. Thank you, " + data.name + ".</div>");
                  }
          }, "json");    
      });

  });
)

process_form.php:

<?php

$email_check = '';
$return_arr = array();

if(filter_var($_POST['email'], FILTER_VALIDATE_EMAIL) || filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)) {
   $email_check = 'valid';
}
else {
    $email_check = 'invalid';
}


$return_arr["email_check"] = $email_check;

if (isset($_POST['email'])){
    $return_arr["name"] = $_POST['name'];
    $return_arr["email"] = $_POST['email'];
}

echo json_encode($return_arr);

-編集-エラーを処理した後、回答者のおかげで、作業バージョンはhhttp://www.jensbits.com/demos/jqsubmit/index.phpにあります。

4

2 に答える 2

2

<script type="text/javascript" src="encode.js"></script>読み込んでいません。404を返します。

そして、encode.jsjqueryjsの後に置きます。

あなたが引用した私の投稿からデモのソースを表示します。それはあなたを助けるでしょう。

http://www.jensbits.com/demos/jqsubmit/index.php

ありがとう、ところで...

于 2012-11-05T03:54:14.353 に答える
0

ファイル名を使用した作業コード:

index.php、次の場所にありsitename/index.phpます:

<!DOCTYPE html>
<html>
<head>
  <title>Tmp homepage</title>
  <script type="text/javascript" src="js/jquery-1.8.2.min.js"></script>
  <script type="text/javascript" src="js/encode.js"></script>
</head>

<body>
<form id="ajform">
    <fieldset>
        <legend>jQuery.post Form Submit example</legend>
        <p>
            <label for="name">Name:</label></br />
            <input id="name" type="text" name="name" />
        </p>
        <p>
            <label for="email">email:</label></br />
            <input id="email" type="text" name="email" />
        </p>
        <p>
            <input type="submit" value="Submit" />
        </p>
    </fieldset>
</form>
<div id="post"></div>
</body>

</html>

process_form.php、sitename/process_form.php(php 5.2以降[設定によって異なる場合があります]):

<?php

$email_check = '';
$return_arr = array();

if(filter_var($_POST['email'], FILTER_VALIDATE_EMAIL) || filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)) {
   $email_check = 'valid';
}
else {
    $email_check = 'invalid';
}


$return_arr["email_check"] = $email_check;

if (isset($_POST['email'])){
    $return_arr["name"] = $_POST['name'];
    $return_arr["email"] = $_POST['email'];
}

echo json_encode($return_arr);

(jQuery 1.8.2.min.jsを使用して)にあるsitename/js/encode.jsencode.js:

$(document).ready(
  $(function(){
      $("#ajform").submit(function(e){    
         e.preventDefault();  

          $.post("../process_form.php", $("#ajform").serialize(),
          function(data){
              if(data.email_check == 'invalid'){

                      $("#post").html("<div class='errorMessage'>Sorry " + data.name + ", " + data.email + " is NOT a valid e-mail address. Try again.</div>");
              } else {
                  $("#post").html("<div class='successMessage'>" + data.email + " is a valid e-mail address. Thank you, " + data.name + ".</div>");
                  }
          }, "json");    
      });

  })
)
于 2012-11-05T04:27:35.853 に答える