XML解析错误:找不到根元素

时间:2017-04-25 06:05:15

标签: javascript php sql ajax database

我正在尝试搜索位于一个郊区的数据库中的所有属性。我已经读过它与HTML代码204有关,但我仍然不知道该做什么或它真正意味着什么。我有一段时间没有做任何JS或PHP,所以这可能是一个非常愚蠢的错误,但我不能为我的生活搞清楚。请帮助!

这是我的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";

    }

?>

提前致谢。

2 个答案:

答案 0 :(得分:1)

错误是浏览器的编译器是&#34;评论&#34;所有的PHP和添加空HTML标签。然后它变得困惑,因为有一个&#34;空&#34;文献。

这是因为网站(包括JS,PHP和HTML文件)是从本地目录存储和运行的。例如:

URL读取: file:/// C:/ xampp / htdocs /&#34;项目名称&#34; /Index.html

正确的网址是: localhost /&#34;项目名称&#34;

如果您使用的是XAMPP,则需要将包含所有项目文件的文件夹放在xampp目录的htdocs文件夹中。

答案 1 :(得分:0)

由于您似乎正在使用未显示的Ajax函数,因此很难确定问题的根本原因,因为据我所知,上述任何内容都不会产生您在标题中提到的错误。发布 - 即&#34; XML解析错误:找不到根元素&#34; - 我想知道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>