2008-12-21 77 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