簡體   English   中英

PHP Ajax不創建發布變量

[英]PHP Ajax not creating post variable

前一陣子我用ajax和php進行了搜索。 您可以在文本框中填寫文本,然后嘗試在數據庫中存儲的所有國家/地區中找到匹配項。 現在,我正在完善代碼並使其成為PDO,但是我弄壞了一些東西,卻找不到。

這是我的純HTML

<head>
    <title>Ajax</title>
    <link href="style/style.css" rel="stylesheet" type="text/css" />
    <link rel="stylesheet" type="text/css" />
    <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
    <script type="text/javascript" src="scripts/Javascript.js"></script>
</head>

<body>
    <div id="main">
            <h1 class="title">Enter your country please</h1>

        <input type="text" id="search" autocomplete="off" onchange="">
            <h4 id="results-text">Showing results for: <b id="search-string">Array</b></h4>

        <ul id="results"></ul>
    </div>
</body>

這是我的Jquery和javascript。 請注意,我沒有更改HTML或javascript的任何內容,因此它不會出現類型錯誤。

$(document).ready(function() {
alert('asdf');

function search() {
    var query_value = $('input#search').val();
    $('b#search-string').html(query_value);

    if(query_value !== ''){
        $.ajax({
            type: "POST",
            url: "search.php",
            data: { query: query_value },
            cache: false,
            success: function(html){
                $("ul#results").html(html);
            }
        });
    }

    return false;
}

$("input#search").live("keyup", function(e) {
    clearTimeout($.data(this, 'timer'));
    var search_string = $(this).val();

    if (search_string == '') {
        $("ul#results").fadeOut();
        $('h4#results-text').fadeOut();
    }

    else {
        $("ul#results").fadeIn();
        $('h4#results-text').fadeIn();
        $(this).data('timer', setTimeout(search, 100));
        };
    });
});

這是我的Search.PHP

<?php
class SearchEngine{

    private $html;

    public function __construct($conn){

        $this->html = '<li class="result">
                            <h3>NameReplace</h3>
                            <a target="_blank" href="ULRReplace"></a>
                        </li>';

        if (isset($_POST["query"])) {
            $search_string = $_POST['query'];
        }

        else{
            $search_string = '';
            echo('Something went wrong, post query not set');
        }


        //$search_string = mysql_real_escape_string($search_string);

        if (strlen($search_string) >= 1 && $search_string !== ' ') {

            $query = 'SELECT * FROM country WHERE name LIKE "%' . $search_string . '%"';
            $result = $conn->prepare($query);
            $result->execute();
            $result_array = $result->fetchAll();

                foreach ($result_array as $result) {
                    $display_name = preg_replace("/" . $search_string . "/i", "<b>" . $search_string . "</b>", $result['name']);
                    $display_url = 'sadf';

                    $output = str_replace('NameReplace', $display_name, $this->html);
                    $output = str_replace('ULRReplace', $display_url, $output);
                    echo($output);
                }
        }
    }

}

?>

問題:

永遠不會創建Post查詢,為此,我進行了一個isset設置,因此現在沒有創建Post Query時。 它將創建一個值為“ B”的后查詢。

任何幫助都感激不盡。 請保持謙虛,我是Ajax的新手,我想了解而不是找到解決方案。 謝謝

正如Sean所提到的那樣,在注釋中,在您的jQuery版本中不建議使用$ .live jquery方法。

嘗試改用$ .keyup

$("input#search").keyup(function() {
   // stuff
});

您指向的網址不正確! 看:

您已經將ajax請求指向了search.php:

 $.ajax({
        type: "POST",
        url: "search.php",

但是您在search.php中只有一個類。 一堂課本身不會做任何事情。 您必須實例化並調用其方法/函數。 請比較以下兩段代碼:

<?php
//server.php
//Doing nothing
class SearchEngine{

    private $html;

    public function __construct($conn){
     echo "I'm executing";
    }
}
?>

假設您在server.php中有這個

<?php
//server.php
//It will print "I'm executing" in the screen
class SearchEngine{

    private $html;

    public function __construct($conn){
     echo "I'm executing";
    }
}

$search = new SearchEngine($conn);

?>

解決原始問題,您必須將ajax指向具有INSTANTIATION代碼而不是類的頁面,如下所示:

//index.php
//Let's suppose you have this code in your index.php
$SearchEngine = new SearchEngine($conn);

因此,您的JQuery ajax代碼應如下所示:

    $.ajax({
        type: "POST",
        url: "index.php",

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM