Javascript 如何从php返回php变量值和html响应ajax
我想返回两个变量: 1) search_members.php中mysqli查询的记录总数 2) 如果发现任何结果,则为true或false 这是我的密码: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
<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(数据);
。。。