2017-04-25 66 views
1

我正在嘗試搜索位於一個郊區的數據庫中的所有屬性。我已經讀過它與HTML代碼204有關,但我仍然不知道該怎麼做或者它的真正含義。我有一段時間沒有做任何JS或PHP,所以這可能是一個非常愚蠢的錯誤,但我不能爲我的生活弄清楚。請幫忙!XML解析錯誤:找不到根元素

這裏是我的JS代碼:

function basicSearch(){ 

    //Connect Script to the PHP 
    var urlLink = "basicSearch.php"; 
    //Get search parameters: 
    var searchAreaBar = document.getElementById("searchAreaBar").value; 

    //define the parameters to send to php 
    var strParameters = "searchAreaBar="+searchAreaBar + "&sid=" + Math.random(); 

     // define the options for the AJAX request 
     var objOptions = { 
     // use method post 
     method: "post", 
     // use strParameters as the parameters 
     parameters: strParameters, 
     // if successfil call fuction(objXHR) 
     onSuccess: function(objXHR) { 

      // if objXHR. responseText = yes 
      if(objXHR.responseText=='Yes'){ 

       alert("Success!"); 

      } 
      else{ 

       alert("Error! No Properties Found!"); 

      } 
     } 
    } 

    // define the AJAX request object 
    var objRequest = new Ajax.Request(urlLink,objOptions); 

} 

這是我的PHP代碼:

<?php 

    //Link the username and password: 
    $connect = mysqli_connect("localhost", "admin", "12345", "realestate") or die ('Connection to database failed: ' . mysql_error()); 
    //Extract variables for request parameters: 
    extract($_REQUEST); 

    //Define the query: 
    $BasicSearch = "SELECT * FROM properties WHERE Suberb='$searchAreaBar'"; 
    //Run the query: 
    $resDasicSearch = mysqli_query($BasicSearch) or die(mysql_error()); 
    //SET intCount to number of rows in result: 
    $intCount = mysqli_num_rows($resDasicSearch); 

    //If intCount is greater than 0: 
    if($intCount > 0){ 
     //Echo Yes: 
     echo "Yes"; 
    } 
    else{ 

     //Echo no: 
     echo "No"; 

    } 

?> 

在此先感謝。

+0

'mysqli_query'需要兩個參數 - 數據庫連接是其中之一,並且sql語句是其他 – RamRaider

+0

我添加了$ connect,但我仍然收到相同的錯誤。 –

回答

0

錯誤在於瀏覽器的編譯器「註釋掉了」所有的php並添加了空的HTML標籤。因爲那裏有一個「空」的文件,這讓人感到困惑。

這是因爲網站(包括JS,PHP和HTML文件)正在存儲並從本地目錄運行。例如:

網址閱讀: 文件:/// C:/ XAMPP/htdocs中/ 「項目名稱」 /Index.html

正確的網址是: 本地主機/「項目名稱「

如果您使用的是XAMPP,則包含所有項目文件的文件夾需要放在xampp目錄中的htdocs文件夾中。

0

由於您似乎正在使用未顯示的Ajax函數,因此很難確定問題的根本原因,因爲據我所知,上面的任何內容都不會產生您在標題中提到的錯誤發佈 - 即「XML解析錯誤:找不到根元素」 - 我想知道是否應該在Ajax.Request中有一個配置選項,需要設置它以處理基本的字符串響應?

除此之外,您可能可以使用以下內容 - 甚至可能用於診斷目的。

<?php 

    /* 
     --------------- 
     basicSearch.php 
     --------------- 
    */ 

    $dbhost = 'localhost'; 
    $dbuser = 'admin'; 
    $dbpwd = '12345'; 
    $dbname = 'realestate'; 

    $db = new mysqli($dbhost, $dbuser, $dbpwd, $dbname); 

    $sql='select * from `properties` where `suberb`=?'; 
    $stmt=$db->prepare($sql); 

    if($stmt){ 

     $searcharea = $_POST['searchAreaBar']; 

     $stmt->bind_param('s', $searcharea); 
     $stmt->execute(); 
     $stmt->store_result(); 
     $stmt->bind_result($suberbs); 
     $stmt->fetch(); 

     echo $stmt->num_rows()==0 ? "No" : "Yes"; 

    } 
    $stmt->close(); 
    $db->close(); 
?> 

<script> 
    /* reuseable utility ajax function */ 
    function ajax(method, url, params, callback, options){ 
     var xhr=new XMLHttpRequest(); 
     xhr.onreadystatechange=function(){ 
      if(xhr.readyState==4 && xhr.status==200)callback.call(this, xhr.response, options, xhr.getAllResponseHeaders()); 
     }; 

     var async=params.hasOwnProperty('async') ? params.async : true; 
     var query=[]; 

     for(var n in params)query.push(n+'='+params[n]); 

     switch(method.toLowerCase()){ 
      case 'post': query=query.join('&'); break; 
      case 'get': url+='?'+query.join('&'); params=null; break; 
     } 

     xhr.open(method.toUpperCase(), url, async); 
     xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded'); 
     xhr.send(params); 
    } 


    /* function that does the search */ 
    function function basicSearch(){ 
     /* configure the parameters to be used in the ajax request */ 
     var method='post'; 
     var url='basicSearch.php'; 
     var params={ 
      searchAreaBar:document.getElementById('searchAreaBar').value, 
      sid:Math.random() 
     }; 
     var callback=function(r,o,h){ 
      alert(r ? 'Success' : 'Error! No Properties Found!') 
     } 
     var options={}; 

     /* call the ajax function */ 
     ajax.call(this,method, url, params, callback, options); 
    } 
</script>