Я пытаюсь найти все свойства в базе данных, которые находятся в одном пригороде. Я читал, что это как-то связано с кодом 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";

    }

?>

Заранее спасибо.

1
Christopher Littlewood 25 Апр 2017 в 09:05

2 ответа

Лучший ответ

Ошибка заключалась в том, что компилятор браузера «закомментировал» весь php и добавил пустые теги HTML. Это было тогда смущено, поскольку был "пустой" документ.

Это произошло потому, что веб-сайт (включая файлы JS, PHP и HTML) хранился и работал из локального каталога. Например:

URL прочитан: file: /// C: / xampp / htdocs / "Имя проекта" /Index.html

Правильный URL-адрес: localhost / "Имя проекта"

Если вы используете XAMPP, папку, содержащую все файлы вашего проекта, необходимо поместить в папку htdocs в каталоге xampp.

1
Christopher Littlewood 9 Май 2017 в 03:16

Поскольку вы, похоже, используете функцию 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>
0
RamRaider 26 Апр 2017 в 07:30