执行服务器端&一个项目中的客户端操作

时间:2017-02-22 03:13:43

标签: php jquery ajax

我找到了一个完全符合我要求的例子。我唯一的问题是这个语法调用book-suggestion.php的辅助文件。如果可能的话,我想在一个页面中执行所有这个功能。

以下是第1步 - 客户端

function book_suggestion()
{
var book = document.getElementById("book").value;
var xhr;
 if (window.XMLHttpRequest) { // Mozilla, Safari, ...
    xhr = new XMLHttpRequest();
} else if (window.ActiveXObject) { // IE 8 and older
    xhr = new ActiveXObject("Microsoft.XMLHTTP");
}
var data = "book_name=" + book;
     xhr.open("POST", "book-suggestion.php", true); 
     xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");                  
     xhr.send(data);
     xhr.onreadystatechange = display_data;
    function display_data() {
     if (xhr.readyState == 4) {
      if (xhr.status == 200) {
       //alert(xhr.responseText);      
      document.getElementById("suggestion").innerHTML = xhr.responseText;
      } else {
        alert('There was a problem with the request.');
      }
     }
    }
}

这是第2部分 - 服务器端

<?php
    //provide your hostname, username and dbname
    $host=""; 
    $username="";  
    $password="";
    $db_name=""; 
    //$con=mysql_connect("$host", "$username", "$password")or die("cannot connect");
    $con=mysql_connect("$host", "$username", "$password");
    mysql_select_db("$db_name");
    $book_name = $_POST['book_name'];
    $sql = "select book_name from book_mast where book_name LIKE '$book_name%'";
    $result = mysql_query($sql);
    while($row=mysql_fetch_array($result))
    {
    echo "<p>".$row['book_name']."</p>";
    }
?>

我需要做些什么来组合这些部分,以便它们都在一个文件中?

1 个答案:

答案 0 :(得分:0)

你可以在一个页面上完成这一切,我使用.htaccess重写,只需一个索引页就可以进行所有操作,所以基本上做同样的事情。您只需在html的输出上方执行php,并在完成后执行exit

<强>的index.php

<?php
# Create some defines
define('DB_HOST','localhost');
define('DB_NAME','database');
define('DB_USER','root');
define('DB_PASS','');
# Create a PDO connection, mysql_* is out of date and unsafe
# Review PDO, there are some presets to the connection that should be explored
# like emulated prepares and other such niceties
$con = new PDO('mysql:host='.DB_HOST.';dbname='.DB_NAME,DB_USER,DB_PASS);
# If there is a value posted, do action
if(!empty($_POST['book_name'])) {
    # Bind parameters
    $sql = "select book_name from book_mast where book_name LIKE ?";
    $query = $con->prepare($sql);
    $query->execute(array($book_name.'%'));
    # Fetch normally
    while($row = $query->fetch(PDO::FETCH_ASSOC)) {
        echo "<p>".$row['book_name']."</p>";
    }
    ##*****THE IMPORTANT PART ******##
    # Stop so you don't process the rest of the page in the ajax
    exit;
}
?>
<!-- THE REST OF YOUR HTML HERE -->
<script>
function book_suggestion()
    {
        var book = document.getElementById("book").value;
        var xhr;
        if (window.XMLHttpRequest) { // Mozilla, Safari, ...
            xhr = new XMLHttpRequest();
        } else if (window.ActiveXObject) { // IE 8 and older
            xhr = new ActiveXObject("Microsoft.XMLHTTP");
        }

        var data = "book_name=" + book;
        xhr.open("POST", "index.php", true); 
        xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");                  
        xhr.send(data);
        xhr.onreadystatechange = display_data;

        function display_data() {
            if (xhr.readyState == 4) {
                if (xhr.status == 200) {
                    //alert(xhr.responseText);      
                    document.getElementById("suggestion").innerHTML = xhr.responseText;
                } else {
                    alert('There was a problem with the request.');
                }
            }
        }
    }
</script>
相关问题