2013-06-18 34 views
0

我第一次使用JQuery。嘗試使用自動完成功能,並繼續獲取上述錯誤。 我測試了MySQL的查詢,他們都工作。 如果我使用下面相同的代碼,但是從沒有自動完成代碼的網頁調用,JSON看起來格式良好。 感謝您提供任何指導。jQuery自動完成:未捕獲TypeError:無法讀取屬性'長度'null

<?php 
$docname=$_POST['docselect']; 
$surname=$_POST['lastname1']; 
if (isset($_POST['lastname1'])){ 
    $return_arr = array(); 
try { 
    $dbc=mysqli_connect('localhost','gotlibc_testuser','**passwordgoeshere**','gotlibc_robo2')  or die("Error connecting to MySQL server."); 

$query="SELECT PT_ID, surname, firstname, jnum FROM patients WHERE surname LIKE '$surname%' ORDER BY surname"; 

$result=mysqli_query($dbc,$query) or die('Error querying database.'); 

$row=array(); 
while($Xrow = mysqli_fetch_array($result)) { 
    $row['label']="{$Xrow['surname']},{$Xrow['firstname']},{$Xrow['jnum']}"; 
    $row['value']=$Xrow['PT_ID']; 
    $return_arr[]=$row; 
} 
} 
// end try 
catch(Exception $e) { 
echo "<script type='text/javascript'> alert('Hi'); </script>"; 
printf("catch activated"); 
echo $e->errorMessage(); 
} 
echo json_encode($return_arr); 
mysqli_close($dbc); 
} 
?> 

這裏的調用網頁的相關片段

<link rel="stylesheet" href="http://code.jquery.com/ui/1.10.3/themes/smoothness/jquery-ui.css"> 
    <script src="http://code.jquery.com/jquery-1.9.1.js"></script> 
    <script src="http://code.jquery.com/ui/1.10.3/jquery-ui.js"></script> 
<script> 
$(document).ready(function(){ 
     $("#lastname1").autocomplete({ 
       source: "pt_autoshow1.php", minLength: 1 
}); 
}); 
</script> 

<h2>Patient Information:</h2> 
<br> 
<form id="surnamepicker" action="#" method="post"> or Last name: <input name="lastname1" id="lastname1" type="text"> 
    <div class="rage_button_781076"> <a href="">New Patient</a> </div> 
with Dr. 
    <select name="docname"> 
    <option value="2">Doctor A</option> 
    <option value="1">Doctor B</option> 
    <option value="3">Doctor C</option> 
    </select></form> 
+0

可以在獨立調用頁面時發佈json響應嗎? – redDevil

+0

{「value」:「2」,「label」:「Smith,Adele,77776543」},{「value」:「4」,「label」:「Watson,Wendy,99876543」},{「value」 : 「5」, 「標籤」: 「Wilkowitz,伊達,44556677」}] – user1650559

回答

1

其工作正常,我 PHP函數將返回行/否結果作爲響應

public function shamsearchJSON() 
    { 
    $search = $this->input->post('search'); 

    $query = $this->user_model->getmessages($search); 

     if(!empty($query)){ 
     echo json_encode(array('responses'=> $query)); 
     } 
     else{ 
     echo json_encode(array('responses'=> 'No Results')); 
     } 
} 

javascript代碼

$("#search-inbox").autocomplete({ 
       minLength: 2, 
       source: function(request, response) { 
       // $.getJSON("<?php echo base_url(); ?>index.php/user/shamsearchJSON?search="+request.term,response); 

         $.ajax({ 
          url: "<?php echo base_url(); ?>index.php/user/shamsearchJSON", 
          data: {"search": request.term}, 
          type:"POST", 
          success: function(data) { 

          var parsed = JSON.parse(data); 

          if(parsed.responses == "No Results") 
          { 
          alert("no results::"); 
          var newArray = new Array(1); 
          var newObject = { 
             sub: "No Results", 
             id: 0 
            }; 

          } 
          else{ 
           var newArray = new Array(parsed.length); 
           var i = 0; 
           parsed.responses.forEach(function (entry) { 
            var newObject = { 
             sub: entry.subject, 
             id: entry.mID 
            }; 
            newArray[i] = newObject; 
            i++; 
           }); 

          } 
          response(newArray); 
         }, 
          error:function(){ 
          alert("Please try again later"); 
          } 
         }); 

       }, 
       focus: function(event, ui) { 
       //$("#search-inbox").val(ui.item.sub); 
       return false; 
       }, 
       select: function(event, ui) { 
       if(ui.item.id != 0){ 
       $("#search-inbox").val(ui.item.sub); 
       openInboxMessage(ui.item.id); 
       } 
       else 
       { 

       } 
       return false; 
       } 
      }).data("ui-autocomplete")._renderItem = function(ul, item){ 
       return $("<li>").append("<a>" + item.sub +"</a>").appendTo(ul); 
      }; 
相關問題