2012-11-05 40 views
2

我通過代碼去在以下兩個鏈接: http://pastebin.com/iUd22CRY http://www.jensbits.com/2009/10/04/jquery-ajax-and-jquery-post-form-submit-examples-with-php應該工作的jQuery .post()函數通過PHP的HTML?

一切似乎都在代碼本身很清楚,但我不能找出其中的代碼塊與該文件名相關的完整的故事。基本上,我試圖找到一個使用jQuery的post函數與PDO對象進行交互的最新指南,而且我一直非常不成功。

接下來我打算做的是嘗試轉換/更新w3schools的一個例子,如果我不知道文件名應該是什麼。基本上,使用pastebin,我想我知道代碼前三段的位置,但我不知道將javascript放在哪裏接近尾聲。不過,在我貧民窟之前,我希望有人會查看我的代碼。你能看到問題嗎?

CNC中 我已經注意到通過Chrome的控制檯(在瀏覽器ctrl+shift+j)一個錯誤:Uncaught SyntaxError: Unexpected token ; encode.js:17http://ajform.99k.org/issues/semicolon/Uncaught ReferenceError: $ is not defined encode.js:1http://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:

​​

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

CNC中 在錯誤的工作後,由於回答者,工作版本是hhttp://www.jensbits.com/demos/jqsubmit/index.php

+1

我沒有找到'JS /編碼。js'在您的網站上。 – slashingweapon

+0

你的腳本標記是錯誤的。 src屬性應該是'/ js/encode.js'而不是'encode.js'。 – slashingweapon

+0

@slashingweapon謝謝。它已被修復。這是一個鏈接:http://ajform.99k.org/js/encode.js –

回答

2

您的<script type="text/javascript" src="encode.js"></script>尚未加載。它返回一個404.

而且,把encode.js之後的jQuery js。

查看我引用的帖子中演示的源代碼。它會幫助你。

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

感謝,順便說一句...

+0

由於複製/粘貼錯誤,我剛剛保存了一個錯誤的草稿。此更改現已在服務器上提交。新的鏈接是'js/encode.js'。謝謝。 –

+0

@ Wolfpack'08的答案已更新。把你的腳本按正確的順序排列。 –

+1

@ Wolfpack'08我看到你的工作。 :-) –

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

encode.js,位於sitename/js/encode.js(使用jQuery 1.8.2.min.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");  
     }); 

    }) 
) 
+0

工作示例:http://www.jensbits.com/demos/jqsubmit/index.php –