2014-03-06 23 views
-1

所以我第一次在项目中使用AJAX,我试图发送一个POST但我认为我没有发送请求的权利,或者有我的语法错误或加价。它必须是基本的东西,因为我得到了一些要求。检查出this test domain。任何人都可以对这些PHP错误如何进入它有任何意义?AJAX不检索所有数据与JavaScript请求

这里是我的加价文件:

<!DOCTYPE html> 
    <html> 

     <head> 

      <title>Kyle Breitenbach - Artist Portfolio - Paintings - New York</title> 

      <meta name="viewport" content="width=device-width, initial-scale=1.0"/> 
      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 

      <!-- SITE CREDITS FOUND BELOW IN HUMANS.TXT --> 
      <link type="text/plain" rel="author" href="humans.txt"> 

      <link rel="stylesheet" href="css/style.css?v=5"> 
      <script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script> 
      <script> 

       function loadXMLDoc(w_year) { 
        var xmlhttp; 
        if (window.XMLHttpRequest) { 
         // code for IE7+, Firefox, Chrome, Opera, Safari 
         xmlhttp = new XMLHttpRequest(); 
        } 
        else { 
         // code for IE6, IE5 
         xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); 
        } 
        xmlhttp.onreadystatechange = function() { 
         if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { 
          document.getElementById("gallery").innerHTML=xmlhttp.responseText; 
         } 
        } 
        xmlhttp.open("POST","work.php",true); 
        xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded"); 
        xmlhttp.send("work_year="+w_year); 

       } 

      </script> 

     </head> 

     <body> 

      <div id="main"> 

       <div id="mobileNav"> 
        <div class="left"> 
         <p><strong>Kyle Breitenbach</strong></p> 
        </div> 
        <div class="right"> 
         <img alt="Kyle Breitenbach Art Gallery Icon" src="images/gallery-icon.png"> 
        </div> 
        <ul id="mobileMenu"> 

         <?php 
          foreach(array_unique($w_date) as $key => $value) { 
          print("<li><a href='javascript:loadXMLDoc(" . $value . ")'>" . $value . "</a></li>" . "\n"); 
          } 
         ?> 

         <li><a href="http://www.kylebreitenbach.com/cv/">CV</a></li> 
         <li><a href="http://www.kylebreitenbach.com/contact/">Contact</a> 

        </ul><!-- "#mobileMenu -->" 
       </div><!-- "#mobileNav" --> 

       <div id="nav"> 
        <strong>Kyle Breitenbach</strong> 
        <br><br><br> 

        <?php 
        foreach(array_unique($w_date) as $key => $value) { 
         print("<p><a href='javascript:loadXMLDoc(" . $value . ")'>" . $value . "</a></p>" . "\n"); 
        } 
        ?> 

        <br> 
        <p><a class="about" href="http://www.kylebreitenbach.com/cv/">CV</a></p> 
        <p><a class="about" href="http://www.kylebreitenbach.com/contact/">Contact</a></p> 
       </div><!-- "#nav" --> 

       <div id="gallery"></div> 

      </div><!-- "#main" --> 

      <div id="info"> 
       <p id="gallery-title"></p> 
       <p id="gallery-medium"></p> 
       <p id="gallery-size"></p> 
       <p id="gallery-date"></p> 
      </div><!-- "#info" --> 

      <script type="text/javascript"> 

       $(document).ready(function() { 
        <?php print("loadXMLDoc(" . $nav_date[0] . ")"); ?> 
       }); 

      </script> 
      <script type="text/javascript" src="new_kb.js"></script> 
      <script type="text/javascript" src="js/google-analytics.js"></script> 

     </body> 

    </html> 

这是我的“work.php”的AJAX与来自最后一个文档的work_year输入请求:

<?php 

    require("opendbas3.php"); 

    $work_year = $_POST["work_year"]; 

    $w_query = "SELECT * FROM kb_work WHERE p_date='$work_year' ORDER BY p_id DESC"; 
    $w_result = mysql_query($w_query, $link); 

    while ($w_row = mysql_fetch_array($w_result)) { 

     $w_id = array();  $w_id_str = $w_row["p_id"];   array_push($w_id, $w_id_str); 
     $w_src = array();  $w_src_str = $w_row["p_src"];  array_push($w_src, $w_src_str); 
     $w_title = array();  $w_title_str = $w_row["p_title"]; array_push($w_title, $w_title_str); 
     $w_medium = array(); $w_medium_str = $w_row["p_medium"]; array_push($w_medium, $w_medium_str); 
     $w_size = array();  $w_size_str = $w_row["p_size"];  array_push($w_size, $w_size_str); 
     $w_date = array();  $w_date_str = $w_row["p_date"];  array_push($w_date, $w_date_str); 

    } 

    print('<div id="gallery-control-bar">'); 
     print('<div id="gallery-buttons" class="control-bar-item">'); 
      print('<div id="previous-button" class="gallery-button">&larr;</div>'); 
      print('<div id="next-button" class="gallery-button">&rarr;</div>'); 
     print('</div><!-- "#gallery-buttons" -->'); 
     print('<div id="image-index" class="control-bar-item"><span id="current-post"></span> of <span id="post-total"></span></div>'); 
     print('<div id="gallery-type" class="control-bar-item">'); 
      print('<img id="gallery-switch" alt="Kyle Breitenbach Art Gallery Icon" src="images/gallery-icon.png"'); 
     print('</div><!-- "#gallery-type -->'); 
    print('</div><!-- "#gallery-control-bar" -->'); 

    print('<div id="gallery-image"></div>'); 
    print("<div id='gallery-viewer'>"); 

     foreach($w_id as $key => $value) { 
      print("<div class='gallery-row'>"); 

      $i = 1; 
      for ($x = 0; $x < sizeof($w_id); $x++) { 
       print("<img id='" . $x . "' class='gallery-item' src='" . $w_src[$x] . "' alt='Kyle Breitenbach " . $w_title[$x] . "'>"); 
       if (($i % 4) == 0) { 
        print("</div><div class='gallery-row'>"); 
       } 
       $i++; 
      } 

      print("</div>"); 

     } 

    print('</div><!-- "#gallery-viewer" -->'); 

    print("<script type='text/javascript'>"); 

     print("var w_id = " . json_encode($w_id)); 
     print("var w_src = " . json_encode($w_src)); 
     print("var w_title = " . json_encode($w_title)); 
     print("var w_medium = " . json_encode($w_medium)); 
     print("var w_size = " . json_encode($w_size)); 
     print("var w_date = " . json_encode($w_date)); 

    print("</script>"); 

?> 

这是将这些效果结合在一起的JS文件,这个东西可能有点不相关:

 var currentImg = 0; 
     var totalImg = 0; 

     $("#next-button").click(function() { 
      if (currentImg == totalImg) { 
       currentImg = 0; 
      } 
      else { 
       currentImg++; 
      } 
      changeImg(); 
     }); 

     $("#previous-button").click(function() { 
      if (currentImg == 0) { 
       currentImg = totalImg; 
      } 
      else { 
       currentImg--; 
      } 
      changeImg(); 
     }); 

     function changeImg() { 

      $("#gallery-image").html("<img src='" + w_src[currentImg] + "'>"); 
      $("#gallery-title").html(w_title[currentImg]); 
      $("#gallery-medium").html(w_medium[currentImg]); 
      $("#gallery-size").html(w_size[currentImg]); 
      $("#gallery-date").html(w_date[currentImg]); 

      var userCurrent = currentImg + 1; 
      var userTotal = galleryYear.x_id.length; 

      $("#current-post").html(userCurrent); 
      $("#post-total").html(userTotal); 

      var galWidth = $("#gallery-image" > "img").width(); 
      $("#gallery").width(galWidth); 

     } 

你有什么想法可以重新接近AJAX,也许有不同的调用函数的配置吗?也许有些东西会更适合我的请求的性质,使其正常工作?

+0

提供AJAX结果**的脚本不应该格式化任何东西,它应该返回一个很好的数据集,然后请求者将对其进行格式化。你应该重新评估它的工作方式。 –

+0

从错误中看来,$ w_date是未定义的。尝试为此设置一个硬性值,看看它是否纠正了它。如果确实如此,找出你的var为什么没有定义。 – Mattt

回答

1

好了,你有3个独立的错误:

Notice: Undefined variable: w_date in /hermes/bosoraweb186/b1303/ipg.joshiefishbeincom/kyle-breitenbach/new_index.php on line 95 


Warning: array_unique() expects parameter 1 to be array, null given in /hermes/bosoraweb186/b1303/ipg.joshiefishbeincom/kyle-breitenbach/new_index.php on line 95 


Warning: Invalid argument supplied for foreach() in /hermes/bosoraweb186/b1303/ipg.joshiefishbeincom/kyle-breitenbach/new_index.php on line 95 

她们三个人都来自这条线,这一切都涉及到同样的问题。

foreach(array_unique($w_date) as $key => $value) { 
  1. $wdate没有定义。
  2. 您正在尝试在一个不确定的变量
  3. 你然后通过数组试图循环运行array_unique你试图用array_unique

基本上创建,你只需要确保$wdate是被设置并且它是一个数组。