Javascript 如何从php返回php变量值和html响应ajax

Javascript 如何从php返回php变量值和html响应ajax,javascript,php,jquery,ajax,Javascript,Php,Jquery,Ajax,我想返回两个变量: 1) search_members.php中mysqli查询的记录总数 2) 如果发现任何结果,则为true或false 这是我的密码: <input type="button" value="Search" onclick="GetSearchResults(0)" class="SrchBtn" /> <script> var pageNo = 1; var DoSearch; var SearchString = ""; fu

我想返回两个变量:

1) search_members.php中mysqli查询的记录总数

2) 如果发现任何结果,则为true或false

这是我的密码:

<input type="button" value="Search" onclick="GetSearchResults(0)" 
       class="SrchBtn" />

<script>
var pageNo = 1;
var DoSearch;
var SearchString = "";

function GetSearchResults()
{
    DoSearch = false;

    if (document.getElementById("SearchString").value > 0) {
        SearchString = document.getElementById("SearchString").value;
        DoSearch = true;
        if (DoSearch === true) {
            $.ajax({
                type: 'POST',
                url: 'search_members.php',
                data: { SearchString: SearchString, pageNo: pageNo},
                success: function(response) {
                    $('#SearchReultsBox').html(response);
                }
            });
        }
    }
}
</script>

var pageNo=1;
var-DoSearch;
var SearchString=“”;
函数GetSearchResults()
{
DoSearch=false;
if(document.getElementById(“SearchString”).value>0){
SearchString=document.getElementById(“SearchString”).value;
DoSearch=true;
如果(DoSearch==真){
$.ajax({
键入:“POST”,
url:“search_members.php”,
数据:{SearchString:SearchString,pageNo:pageNo},
成功:功能(响应){
$('SearchReultsBox').html(响应);
}
});
}
}
}
我想要得到的变量值是 $SearchFound 和php文件中的$total_页面,如下所示 下面是search_members.php的代码

 <?php
include_once('dbConnect.php');

$SearchFound=false;
$Items_PerPage=10;
if (!empty($_POST['SearchString']))
{
    $SearchString= $_POST['SearchString'] ; 
    $SearchString = trim(htmlentities($SearchString));
    $SearchString= strip_tags($SearchString);
    $SearchString= mysqli_real_escape_string($con,$SearchString);
}
$pageNo=$_POST['pageNo'];


$sql="SELECT * from members where member_name=$SearchString";
$result = $con->query($sql); 
$num_rec = mysqli_num_rows($result);
if ($num_rec>0)
{
    $SearchFound=true;
        $total_pages = ceil($num_rec / $Items_PerPage);
        $start_from = ($pageNo-1) * $Items_PerPage;     
        $sql .= " LIMIT $start_from, $Items_PerPage";   
        $result = $con->query($sql);
        $total_page_records = mysqli_num_rows($result); 
        while($row = mysqli_fetch_array($result))
        {
            //echo "<table>";.......display table with results
        }
}
else
{
    echo "<p>no resutls found</p>";
}
?>

如果需要一个集合或多个标量值(如HTML文本或简单字符串),则可能需要返回JSON。在这里像这样:

    <script>
        var pageNo          = 1;
        var SearchString    = "";
        var DoSearch;

        function GetSearchResults() {
            DoSearch    = false;

            if(document.getElementById("SearchString").value>0) {
                SearchString = document.getElementById("SearchString").value;
                DoSearch=true;
                if (DoSearch===true) {
                    $.ajax({
                        type:       'POST',
                        dataType:   'JSON',     //EXPLICITLY SET THIS TO JSON
                        url:        'search_members.php',
                        data:       { SearchString: SearchString, pageNo: pageNo},

                        success:    function(response) {
                            // YOUR AJAX REQUEST RETURNS JSON DATA WITH ONLY 2 VALUE TYPES - INTEGER & BOOLEAN
                            // NOW IF YOU WANT TO DISPLAY YOUR SEARCH RESULT 
                            // YOU MAY WANT TO BUILD THAT IN YOUR PHP FILE (PERHAPS WITH A KEY LIKE SO: html
                            // AFTERWARDS YOU MIGHT BE ABLE TO DO:
                            //$('#SearchResultsBox').html(response.html);
                        },

                        error: function (jqXHR, textStatus, errorThrown) {
                            console.log('Error: '+jqXHR.responseText);
                        }
                    });
                }
            }
        }
    </script>

var pageNo=1;
var SearchString=“”;
var-DoSearch;
函数GetSearchResults(){
DoSearch=false;
if(document.getElementById(“SearchString”).value>0){
SearchString=document.getElementById(“SearchString”).value;
DoSearch=true;
如果(DoSearch==真){
$.ajax({
键入:“POST”,
dataType:'JSON',//显式地将其设置为JSON
url:“search_members.php”,
数据:{SearchString:SearchString,pageNo:pageNo},
成功:功能(响应){
//您的AJAX请求只返回两种值类型的JSON数据—整型和布尔型
//现在如果你想显示你的搜索结果
//您可能希望在PHP文件中构建它(可能使用类似于这样的键:html)
//之后,您可以执行以下操作:
//$('#SearchResultsBox').html(response.html);
},
错误:函数(jqXHR、textStatus、errorshown){
log('Error:'+jqXHR.responseText);
}
});
}
}
}
转到等式的PHP端;您可能希望执行以下操作:

<?php
    /**
     * search_member.php
     */
    include_once('dbConnect.php');

    $SearchFound    = false;
    $Items_PerPage  = 10;

    //DECLARE DEFAULT RESPONSE PAYLOAD 
    $response       = array(
        "message"       => "<p>no resutls found</p>",
        "numRecords"    => null,
        "searchFound"   => false,
    );

    $searchString   = isset($_POST['SearchString']) ? htmlspecialchars(trim($_POST['SearchString']))    : null;
    $pageNo         = isset($_POST['pageNo'])       ? htmlspecialchars(trim($_POST['pageNo']))          : null;

    if ($searchString) {
        $SearchString   = strip_tags($SearchString);
        $SearchString   = mysqli_real_escape_string($con,$SearchString);
    }


    $sql        = "SELECT * FROM members WHERE member_name='{$SearchString}'";
    $result     = $con->query($sql);
    $num_rec    = mysqli_num_rows($result);

    if ($num_rec>0) {
        $SearchFound        = true;
        $total_pages        = ceil($num_rec / $Items_PerPage);
        $start_from         = ($pageNo-1) * $Items_PerPage;
        $sql               .= " LIMIT {$start_from}, {$Items_PerPage}";
        $result             = $con->query($sql);
        $total_page_records = mysqli_num_rows($result);

        //SINCE YOU WANT TO ONLY RETURN 2 VALUE: DO IT HERE INSTEAD:
        $response           = array(
            "message"       => "The World is Good and Everyone is Smiling like you, now.... ;-)",
            "numRecords"    => $total_page_records,
            "searchFound"   => $SearchFound
        );

        /*
        while($row = mysqli_fetch_array($result)){
            //echo "<table>";.......display table with results
        }
        */
    }else{
        //REMEMBER YOU ARE RETURNING JSON DATA SO NO NEED TO ECHO A HTML DATA RATHER SEND IT BACK AS A PAYLOAD
        //echo "<p>no resutls found</p>";
    }

    //SEND BACK A JSON PAYLOAD BASED ON THE RESPONSE DATA
    die( json_encode($response) );

?>

如果需要一个集合或多个标量值(如HTML文本或简单字符串),则可能需要返回JSON。如下所示:

    <script>
        var pageNo          = 1;
        var SearchString    = "";
        var DoSearch;

        function GetSearchResults() {
            DoSearch    = false;

            if(document.getElementById("SearchString").value>0) {
                SearchString = document.getElementById("SearchString").value;
                DoSearch=true;
                if (DoSearch===true) {
                    $.ajax({
                        type:       'POST',
                        dataType:   'JSON',     //EXPLICITLY SET THIS TO JSON
                        url:        'search_members.php',
                        data:       { SearchString: SearchString, pageNo: pageNo},

                        success:    function(response) {
                            // YOUR AJAX REQUEST RETURNS JSON DATA WITH ONLY 2 VALUE TYPES - INTEGER & BOOLEAN
                            // NOW IF YOU WANT TO DISPLAY YOUR SEARCH RESULT 
                            // YOU MAY WANT TO BUILD THAT IN YOUR PHP FILE (PERHAPS WITH A KEY LIKE SO: html
                            // AFTERWARDS YOU MIGHT BE ABLE TO DO:
                            //$('#SearchResultsBox').html(response.html);
                        },

                        error: function (jqXHR, textStatus, errorThrown) {
                            console.log('Error: '+jqXHR.responseText);
                        }
                    });
                }
            }
        }
    </script>

var pageNo=1;
var SearchString=“”;
var-DoSearch;
函数GetSearchResults(){
DoSearch=false;
if(document.getElementById(“SearchString”).value>0){
SearchString=document.getElementById(“SearchString”).value;
DoSearch=true;
如果(DoSearch==真){
$.ajax({
键入:“POST”,
dataType:'JSON',//显式地将其设置为JSON
url:“search_members.php”,
数据:{SearchString:SearchString,pageNo:pageNo},
成功:功能(响应){
//您的AJAX请求只返回两种值类型的JSON数据—整型和布尔型
//现在如果你想显示你的搜索结果
//您可能希望在PHP文件中构建它(可能使用类似于这样的键:html)
//之后,您可以执行以下操作:
//$('#SearchResultsBox').html(response.html);
},
错误:函数(jqXHR、textStatus、errorshown){
log('Error:'+jqXHR.responseText);
}
});
}
}
}
转到等式的PHP端;您可能希望执行以下操作:

<?php
    /**
     * search_member.php
     */
    include_once('dbConnect.php');

    $SearchFound    = false;
    $Items_PerPage  = 10;

    //DECLARE DEFAULT RESPONSE PAYLOAD 
    $response       = array(
        "message"       => "<p>no resutls found</p>",
        "numRecords"    => null,
        "searchFound"   => false,
    );

    $searchString   = isset($_POST['SearchString']) ? htmlspecialchars(trim($_POST['SearchString']))    : null;
    $pageNo         = isset($_POST['pageNo'])       ? htmlspecialchars(trim($_POST['pageNo']))          : null;

    if ($searchString) {
        $SearchString   = strip_tags($SearchString);
        $SearchString   = mysqli_real_escape_string($con,$SearchString);
    }


    $sql        = "SELECT * FROM members WHERE member_name='{$SearchString}'";
    $result     = $con->query($sql);
    $num_rec    = mysqli_num_rows($result);

    if ($num_rec>0) {
        $SearchFound        = true;
        $total_pages        = ceil($num_rec / $Items_PerPage);
        $start_from         = ($pageNo-1) * $Items_PerPage;
        $sql               .= " LIMIT {$start_from}, {$Items_PerPage}";
        $result             = $con->query($sql);
        $total_page_records = mysqli_num_rows($result);

        //SINCE YOU WANT TO ONLY RETURN 2 VALUE: DO IT HERE INSTEAD:
        $response           = array(
            "message"       => "The World is Good and Everyone is Smiling like you, now.... ;-)",
            "numRecords"    => $total_page_records,
            "searchFound"   => $SearchFound
        );

        /*
        while($row = mysqli_fetch_array($result)){
            //echo "<table>";.......display table with results
        }
        */
    }else{
        //REMEMBER YOU ARE RETURNING JSON DATA SO NO NEED TO ECHO A HTML DATA RATHER SEND IT BACK AS A PAYLOAD
        //echo "<p>no resutls found</p>";
    }

    //SEND BACK A JSON PAYLOAD BASED ON THE RESPONSE DATA
    die( json_encode($response) );

?>

我的精神力量在周一很弱。你能发布
搜索成员的内容吗。php
?那么现在发生了什么事?不清楚我发布了php文件的代码。echo$searchfind
echo$total\u pages
有什么问题吗?@JeffPuckettII这是ajax,浏览器会在第一次发布后停止监听t回应。我的精神力量在周一很弱。你能发布
search_成员的内容吗。php
?那么现在发生了什么事?不清楚我发布了php文件的代码。echo$searchfind
echo$total_pages
有什么问题吗?@JeffPuckettII这是ajax,浏览器将在第一个响应。如果您返回
JSON
,您需要在成功回调中做的不仅仅是
.html(数据);
。如果您返回
JSON
,您需要在成功回调中做的不仅仅是
.html(数据);
。。。