2011-01-28 121 views
2

嗨,我有這一塊的jQuery代碼:jQuery的阿賈克斯問題

<script type="text/javascript" > 
    $(function() { 
     $(".submitButton").click(function() { 
      var post = $("#post").val(); 
      var dataString = 'post='+ post; 

      if(post=='') 
      { 
       $('.error').fadeIn(200).show(); 
      } 
      else 
      { 
       $.ajax({ 
        type: "POST", 
        url: "post.php", 
        data: dataString, 
        success: function(){ 
         $('.error').fadeOut(200).hide(); 
        } 

       }); 
      } 
      return false; 
     }); 
     $('.error').hide(); 
    }); 
</script> 

而且我希望它無需刷新後的值。我創建了post.php:

<?php 
    ini_set('display_errors', 'On'); 
    error_reporting(E_ALL); 

    session_start(); 

    $post=mysql_real_escape_string($_POST['post']); 
    $mysql=mysql_connect('localhost','***','***'); 
    mysql_select_db('jmtdy'); 
    $result=mysql_query("select * from users where username='".$_SESSION['username']."'") or die(mysql_error()); 
    $dbarray=mysql_fetch_assoc($result); 
    mysql_query("insert into posts (userid, post, username) values ('".$dbarray['id']."','".$post."','".$dbarray['username']."'") or die(mysql_error()); 
?> 

但是這些值仍未被添加到數據庫中。你知道這個問題可能是什麼嗎?

+0

我會建議使用的表單提交處理程序,而不是點擊事件,因爲形式可以通過按任何輸入輸入提交,這將不會觸發你的Ajax – Alex 2011-01-28 15:41:42

回答

1

你檢查,以確保服務器沒有地方拋出一個錯誤?您應該檢查以確保您的PHP腳本通過輸出內容正確運行。

我也建議使用Firebug(或Chrome瀏覽器開發。工具)來監視XHR請求,看看是否有任何問題出現。

+0

我加入後$後這一權利= mysql_real .... echo $ post;並沒有出現在網頁上。 – 2011-01-28 15:33:12

0

嘗試使用:

var data = new Object(); 
data["post"] = $("#post).val(); 
// .... 
// In ajax section 
data: data, 
dataType: "json" 

在你的PHP文件製作print_r($_POST)。並使用某人的調試器來處理,你的ajax發送了什麼。

1

好了,把它。

<!doctype html> 
<html> 
    <head> 
     <title>Test</title> 
      <script type="text/javascript" src="http://code.jquery.com/jquery-1.4.4.min.js"></script> 
      <script type="text/javascript"> 
       $(document).ready(function() { 
        $('#your_form').submit(function(e){ 
         e.preventDefault(); // prevents default form submit action 
         $('.error').hide(); 
         $('.loading').fadeIn(); // show the loading bar or circle, whatever 
         if (check_form($(this))) { 
          $.post('post.php',$(this).serialize(),function(data){ 
           $('.loading').hide(); 
           if (data.error === '') { 
            console.log(data.response); 
           } else { 
            console.log(data.error); 
           } 
          },"json"); 
         } else { 
          return false; 
         } 
        }); 
       }); 
       function check_form(elem) { 
        var check_array = elem.find('input:not([type=submit])'); 
        $.each(check_array,function(i){ 
         if (check_array.eq(i).val() === '') { 
          return show_error('Field "' + check_array.eq(i).prev().text() + '" must be filled.'); 
         } 
        }); 
        return true; 
       } 
       function show_error(text) { 
        $('.error').html(text).fadeIn(); 
       } 
     </script> 
     </head> 
     <body> 
     <div class="error" style="display:none;"></div> 
     <div class="loading" style="display:none;"><img src="http://action.afscme.org/c/51/images/ajax-loader.gif" /></div> 
     <form id="your_form"> 
      <label for="your_name">Your name</label> 
      <input type="text" name="your_name" /> 
      <label for="your_name">Your surname</label> 
      <input type="text" name="your_surname" /> 
      <input type="submit" value="Submit" /> 
     </form> 
    </body> 
</html> 


<?php 
    ini_set('display_errors', 'On'); 
    error_reporting(E_ALL); 
    session_start(); 

    $post = mysql_real_escape_string($_POST['your_name'].' '.$_POST['your_surname']); 
    $mysql = mysql_connect('localhost','***','***'); 
    mysql_select_db('jmtdy'); 
    $result = mysql_query("select * from users where username='".$_SESSION['username']."'") or die(mysql_error()); 
    $dbarray = mysql_fetch_assoc($result); 
    $query = "insert into posts (userid, post, username) values ('".$dbarray['id']."','".$post."','".$dbarray['username']."'"; 
    if (mysql_query($query)){ 
     $data['error'] = ''; 
     $data['response'] = 'Everything is ok'; 
    } else { 
     $data['error'] = mysql_error($mysql); 
    } 

    echo json_encode($data); 
?>