【问题标题】:How to send GET value and php available to another page using ajax?如何使用 ajax 将 GET 值和可用的 php 发送到另一个页面?
【发布时间】:2014-02-07 07:47:27
【问题描述】:

首先我访问

www.mysite.com/index.php?order_by=id asc

我想将$name 和$_GET[order_by] 发送到autoload_process.php,我该怎么做?

.

.

.

index.php

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Auto Loading Records</title>
<script type="text/javascript" src="js/jquery-1.9.0.min.js"></script>

<?php
include("connect.php");
$items_per_group = 5;
$mysqli = new mysqli($DB_HOST, $DB_USER, $DB_PASSWORD, $DB_NAME);

$results = $mysqli->query("SELECT COUNT(*) as t_records FROM product_details");
$total_records = $results->fetch_object();
$total_groups = ceil($total_records->t_records/$items_per_group);
$results->close(); 
?>

<script type="text/javascript">
$(document).ready(function() {
    var track_load = 0; //total loaded record group(s)
    var loading  = false; //to prevents multipal ajax loads
    var total_groups = <?php echo $total_groups; ?>; //total record group(s)

    $('#results').load("autoload_process.php", {'group_no':track_load}, function() {track_load++;}); //load first group

    $(window).scroll(function() { //detect page scroll

        if($(window).scrollTop() + $(window).height() == $(document).height())  //user scrolled to bottom of the page?
        {

            if(track_load <= total_groups && loading==false) //there's more data to load
            {
                loading = true; //prevent further ajax loading
                $('.animation_image').show(); //show loading image

                //load data from the server using a HTTP POST request
                $.post('autoload_process.php',{'group_no': track_load}, function(data){

                    $("#results").append(data); //append received data into the element

                    //hide loading image
                    $('.animation_image').hide(); //hide loading image once data is received

                    track_load++; //loaded group increment
                    loading = false; 

                }).fail(function(xhr, ajaxOptions, thrownError) { //any errors?

                    alert(thrownError); //alert with HTTP error
                    $('.animation_image').hide(); //hide loading image
                    loading = false;

                });

            }
        }
    });
});
</script>
<style>
body,td,th {font-family: Georgia, Times New Roman, Times, serif;font-size: 15px;}
.animation_image {background: #F9FFFF;border: 1px solid #E1FFFF;padding: 10px;width: 500px;margin-right: auto;margin-left: auto;}
#results{width: 500px;margin-right: auto;margin-left: auto;}
#resultst ol{margin: 0px;padding: 0px;}
#results li{margin-top: 20px;border-top: 1px dotted #E1FFFF;padding-top: 20px;}
</style>
</head>

<body>

<ol id="results">
</ol>
<div class="animation_image" style="display:none" align="center"><img src="ajax-loader2.gif"></div>


</body>
</html>

autoload_process.php

<?php
include("connect.php");
$items_per_group = 5;
$mysqli = new mysqli($DB_HOST, $DB_USER, $DB_PASSWORD, $DB_NAME);

if($_POST)
{
    //sanitize post value
    $group_number = filter_var($_POST["group_no"], FILTER_SANITIZE_NUMBER_INT, FILTER_FLAG_STRIP_HIGH);

    //throw HTTP error if group number is not valid
    if(!is_numeric($group_number)){
        header('HTTP/1.1 500 Invalid number!');
        exit();
    }

    //get current starting point of records
    $position = ($group_number * $items_per_group);

    //Limit our results within a specified range. 
    $results = $mysqli->query("SELECT * FROM product_details WHERE seller = '$name' ORDER BY $_GET[order_by] LIMIT $position, $items_per_group");

    if ($results) { 
        //output results from database

        while($obj = $results->fetch_object())
        {
            echo '<li id="item_'.$obj->id.'">'.$obj->id.' - <strong>'.$obj->seller.'</strong></span> &mdash; <span class="page_message">'.$obj->description.'</span></li>';
        }

    }
    unset($obj);
    $mysqli->close();
}
?>

【问题讨论】:

  • Warning: E_NON_ISOLATED_EXAMPLE on line 21622082 of /var/www/stackoverflow/questions
  • $name 未在 index.php 中声明或定义
  • $name 是 php 可用 $name = session(Username)

标签: php jquery ajax post get


【解决方案1】:

先把url参数值保存到这样的隐藏输入框

<input type="hidden" id="orderby" value="<?php echo $_GET['orderby']; ?>"/>

和像这样的会话变量

<input type="hidden" id="name" value="<?php echo $_SESSION['Username']; ?>"/>

然后像这样在 $.POST 中传递值

var orderby = $("#orderby").val();

var name = $("#name").val();

$.post('autoload_process.php',{'group_no': track_load, 'order_by':orderby, 'name':name} , function(data){

【讨论】:

  • 以及如何将 $name 发送到 autoload_process.php
  • 使用相同的进程将其保存在单独的input框中,将值存储在jquery变量中并将其传递给$.POST
【解决方案2】:

$.post 的第二个参数是“数据”。您可以将变量作为对象发送。

例如:{ 'group_no': track_load, name: 'John Smith', order_by: 'id asc' }

【讨论】:

    猜你喜欢
    • 2016-12-22
    • 1970-01-01
    • 2014-05-15
    • 1970-01-01
    • 2012-09-17
    • 1970-01-01
    • 2012-12-21
    • 1970-01-01
    • 2016-12-01
    相关资源
    最近更新 更多