2008-12-21 75 views
1

我正在處理腳本以將數據發送到mysql表格,並且我已將它們全部正常工作,但調用的成功部分未將我的結果加載到我的頁面上的結果列中。我的代碼如下。不打印來自AJAX的結果

關於我能做些什麼來解決這個問題的任何建議?我猜測問題出在我的AJAX調用中的「成功:」選項中。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
<title>Facebook like ajax post - jQuery - ryancoughlin.com</title> 
<link rel="stylesheet" href="css/screen.css" type="text/css" media="screen, projection" /> 
<link rel="stylesheet" href="css/print.css" type="text/css" media="print" /> 
<!--[if IE]><link rel="stylesheet" href="css/ie.css" type="text/css" media="screen, projection"><![endif]--> 
<script src="js/jquery.js" type="text/javascript" charset="utf-8"></script> 
<script type="text/javascript"> 
/* <![CDATA[ */ 
$(document).ready(function(){ 

    $('p.validate').hide(); 

    $.getJSON("readJSON.php",function(data){ 
     $.each(data.posts, function(i,post){ 
      content = '<div id="post-'+ post.id +'">\n'; 
      content += '<h3>' + post.author + '</h3>\n'; 
      content += '<p class="small quiet">' + post.date_added + '</p>\n'; 
      content += '<p>' + post.post_content + '</p>'; 
      content += '<hr/>'; 
      $("#contents").append(content).fadeIn("slow");  
     }); 
    }); 
    $(".reload").click(function() { 
     $("#posts").empty(); 
    }); 

    $("#add_post").submit(function() { 
     $('p.validate').empty(); 
     // we want to store the values from the form input box, then send via ajax below 
     var author = $('#author').attr('value'); 
     var post = $('#post').attr('value'); 

     if(($('#author').val() == "") && ($('#post').val() == "")){ 
      $("p.validate").fadeIn().append("Both fields are required."); 
      $('#author,#post').fadeIn().addClass("error"); 
     }else{ 
      $.ajax({ 
       type: "POST", 
       url: "ajax.php", 
       data: "author="+ author + "&post=" + post, 
       success: function(result){ 
        $('#contents').after("<div>" +result +"</div>"); 
       } 
      }); 

     } 
     return false; 
    }); 

}); 
/* ]]> */ 
</script> 
<style type="text/css"> 
h3{margin:10px 0;} 
p{margin:5px 0;} 
#posts{display:none;} 
</style> 
</head> 
<body> 
     <div class="container"> 
       <div class="span-24"> 
         <div id="post-container" class="span-9 colborder"> 
           <h2>Posts loaded via Ajax:</h2> 
           <div id="contents"></div> 
         </div> 
         <div id="form" class="span-11"> 
          <h2>New Post:</h2> 

          <form name="add_post" id="add_post" action=""> 
           <label>Author:</label><br /> 
           <input type="text" name="author" id="author" size="15" class="text" /><br /> 
           <label>Post:</label><br /> 
           <textarea name="post" id="post" rows="5" cols="5" class="text"></textarea><br /> 
           <input type="submit" value="Post" id="submit" /><br /> 
          </form><br /> 
          <p class="validate error"></p> 

         </div> 
       </div> 
       <div class="span-24"> 
        <a href="#" class="reload">Reload</a> 
       </div> 
     </div> 
</body> 
</html> 

回答

1

問題要問自己......

  1. 是否jQuery的甚至可以運行你的成功回調?
  2. 如果是這樣的響應數據格式良好的標記?

開始時我會添加一個「調試器」;聲明你的成功功能(假設你有firefox和螢火蟲)。這將使您能夠進入腳本控制檯並更好地瞭解發生的情況。

調試器語句將導致腳本執行暫停並進入螢火蟲控制檯。請嘗試以下

success: function(result){ 
      debugger; 
      $('#contents').after("<div>" +result +"</div>"); 
      } 

如果你的腳本打這個我懷疑你的迴應標記的格式不正確和jQuery是有解析成股利的問題,但你可以檢查所有這一切,當你在螢火該斷點。

另一個容易的事情檢查和解僱你的調試

  1. 您的Web服務器都有合法的(狀態200)響應(檢查螢火控制檯或網絡選項卡,看到這種情況,或者使用喜歡如果在ie中運行的提琴手)

讓我知道你是如何得到。

0

你可能會得到一個錯誤嘗試使用錯誤添加調試語句到你的Ajax調用設置

$.ajax({ 
         type: "POST", 
         url: "ajax.php", 
         data: "author="+ author + "&post=" + post, 

         error: function(XMLHttpRequest, textStatus, errorThrown) 
         { alert(errorThrown); }, 

         success: function(result){ 
         $('#contents').after("<div>" +result +"</div>"); 
         } 
       }); 
+0

我補充說,仍然沒有,沒有彈出。我將把這個錯誤部分保留給未來的項目。 Ryan – Coughlin 2008-12-21 06:13:49