javascript - 使用jquery将结果加载到页面中

标签 javascript php jquery mysql pagination

我有一个 php 数据库查询,我正在尝试使用 jquery 处理该查询以加载页面,目前,当我尝试测试什么也没有发生时,所以我觉得问题出在我正在尝试的 jquery 脚本中的 HTML 输出中执行 php 爆炸功能有人能解释一下吗?

这里是解析数据的php代码:

if (!$db_server){
    die("unable to Connect to MYSQL: " . mysqli_connect_error($db_server));
    $db_status = "not connected"; 
}else{  
    if(trim($_POST['submit']) =="submit"){
    }else{              
        if (isset($_POST['dropoption']) && ($_POST['dropoption'] != '')){
            if (isset($_POST['meal']) && ($_POST['meal'] != '')) {
            if(isset($_POST['pn'])){
    $rpp = preg_replace('#[^0-9#', '', $_POST['rpp']);
    $last = preg_replace('#[^0-9#', '', $_POST['last']);
    $pn = preg_replace('#[^0-9#', '', $_POST['pn']);
    if ($pn < 1) {
        $pn = 1;
    } else if ($pn > $last){
        $pn = $last;
    }
    include_once("db_connect.php");
    $limit = 'LIMIT ' .($pn - 1) * $rpp .',' .$rpp;
    $sql = "SELECT * FROM `recipename` WHERE `cuisine_type` ='$dropoption' AND `b_l_d` ='$meal' $limit";
    $query = mysqli_query($db_server, $sql);
    $datastring = '';
    while($row = mysqli_fetch_array($query, MYSQLI_ASSOC)){
        $mealname = $row["mealname"];
        $mealpic = $row["imagepath"];
        $cookingtime = $row["minutes"]."minutes".$row["hours"]."hours";
        $ingredients = $row["ingredients"];
        $recipe = $row["recipe"];
        $datastring .= $mealname.'|'.$mealpic.'|'.$cookingtime.'|'.$ingredients.'|'.$recipe.'||';
    }
    echo $datastring;
    exit();
}   

$dropoption = clean_string($db_server, $_POST['dropoption']);
$meal = clean_string($db_server, $_POST['meal']);
$quer = "SELECT COUNT(recipeid) FROM `recipename` WHERE `cuisine_type` ='$dropoption' AND `b_l_d` ='$meal'";
mysqli_select_db($db_server, $db_database);
$querya= mysqli_query($db_server, $quer); 
if (!$querya) die("database access failed: " . mysqli_error($db_server));
        $row = mysqli_fetch_row($querya);    
        $total_rows = $row[0];
        $rpp = 1;
        $last = ceil($total_rows/$rpp);
        if(last < 1){
                $last = 1;
            }           
            }//if(meal)//
        }//if(cuisine)//    
    } //if(trim)//  
}
?>

这是 jquery 脚本:

<script type="text/javascript">
var rpp=<?php echo $rpp; ?>;
var last=<?php echo $last; ?>;
function request_page(pn) {
    var results_box = document.getElementById("results_box");
    var pagination_controls = document.getElementById("pagination_controls");
    results_box.innerHTML = "loading results";
    var hr = new XMLHttpRequest();
    hr.open("POST", "results.php", true);
    hr.setRequestHeader("Content-type", "application/x-www-form-urleconded");
    hr.onreadystatechange = function() {
        if(hr.readyState == 4 && hr.status == 200) {
            var dataArray = hr.responseText split("||");
            var html_output = "";
            for(i= 0; i< dataArray.length - 1; i++) {
                var itemArray = dataArray[i].split("|");
                html_output += "Recipe: "+itemArray[0]+"<img src='http://ml11maj.icsnewmedia.net/Workshops/Week%207/"+itemArray[1]+"'/><h2>Ingredients</h2><?php $ingredientchunks = (explode(",","+itemArray[2]+"));
for($i = 1; $i < count($ingredientchunks); $i++){
    echo "$i.$ingredientchunks[$i] <br/>";}?>"+itemArray[3]+"<h2>Recipe</h2>
<?php $recipechunks = (explode(",","+itemArray[4]+"));
for($i = 1; $i < count($recipechunks); $i++){
    echo "$i.$recipechunks[$i] </br>";} 
?>";
}
results_box.innerHTML = html_output;
        }
    }
    hr.send("rpp="+rpp+"&last="+last+"&pn="+pn);
    //change pagination controls//
    var paginationCtrls = "";
    if(last !=1) {
        if (pn > 1) {
            paginationCtrls += '<button onclick="request_page('+(pn-1)+')">&lt;</button>';
        }
        paginationCtrls += ' &nbsp; &nbsp; <b>Page '+pn+' of '+last+'</b> &nbsp; &nbsp; ';
        if (pn !=last) {
            paginationCtrls += '< <button onclick="request_page('+(pn+1)+')">&gt;</button>';    
    }
    }
    pagination_controls.innerHTML = paginationCtrls;
}
</script>

最佳答案

是的,我怀疑是您的 explode(",","+itemArray[2]+") 导致了问题。

Explode 用于将字符串拆分为数组,如下所示:

$string = "Apples,Oranges,Pears";
$array = explode(",",$string);
var_dump($array);

示例输出

array(2)
(
    [0] => string(5) "Apples"
    [1] => string(6) "Oranges"
    [2] => string(4) "Pears"
)

关于javascript - 使用jquery将结果加载到页面中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21089186/

相关文章:

javascript - Angular 范围绑定(bind) &(&) 是一次性绑定(bind)吗?

php - 如何操作和整理关联数组中的数据

c# - 重定向到 Jquery 中的 Action-Controller MVC 4

javascript - jQuery Textarea 选择器内部表单

javascript - 在 Firefox 和 IE 上从服务器下载文件

javascript - Angular - 带有动态模板的指令

php 和 javascript 日期不匹配

php - Mysql PHP查询选择

javascript - TableSorter:如何更改排序箭头的位置

javascript - Node.Js 是否保证所有同步调用都在异步调用之前执行?