使用ajax将Php变量传递给另一个变量?

时间:2014-02-12 03:22:51

标签: javascript php jquery ajax wordpress

我有这个JS / jQuery代码

window.onload = function(){

    var request = $.ajax({
    url: "../wp-content/plugins/woocommerce/admin/test.php",
    type: "GET",            
    dataType: "html"
    //data: {$lastid},
    });

    request.done(function(msg) {
        $(".recent-orders").append(msg);
    });

    request.fail(function(jqXHR, textStatus) {
        alert( "Request failed: " + textStatus );
    });
EDIT: This is the method where I get the $lastid.


<?php
function woocommerce_dashboard_recent_orders() {

    $args = array(
        'numberposts'     => 8,
        'orderby'         => 'post_date',
        'order'           => 'ASC',
        'post_type'       => 'shop_order',
        'post_status'     => 'publish'
    );
    $orders = get_posts( $args );
    if ($orders) :
    echo '<ul class="recent-orders">';
        foreach ($orders as $order) :

            $this_order = new WC_Order( $order->ID );

            echo '
            <li>
                <span id = "order-$order->ID" class="order-status '.sanitize_title($this_order->status).'">'.ucwords(__($this_order->status, 'woocommerce')).'</span> <a href="'.admin_url('post.php?post='.$order->ID).'&action=edit">' . get_the_time( __( 'l jS \of F Y h:i:s A', 'woocommerce' ), $order->ID ) . '</a><br />
                <small>'.sizeof($this_order->get_items()).' '._n('item', 'items', sizeof($this_order->get_items()), 'woocommerce').' <span class="order-cost">'.__('Total:', 'woocommerce' ) . ' ' . woocommerce_price($this_order->order_total).'</span></small>
            </li>';

        endforeach;
        $lastid = $order->ID;
        echo '</ul>';
    else:
        echo '<p>' . __( 'There are no product orders yet.', 'woocommerce' ) . '</p>';
    endif;
}
?>

调用名为test.php的php文件。

test.php的

    <?php
//woocommerce_dashboard_recent_orders_realtime();

/**
 * Init the dashboard widgets.
 *
 * @access public
 * @return void
 */

function filter_where( $where = '' ) {
    $oid = 2100;
    $where = " AND ID > $oid";

    return $where;

}


add_filter( 'posts_where', 'filter_where' );

    $args = array(
        'numberposts'     => 8,
        'orderby'         => 'post_date',
        'order'           => 'DESC',
        'post_type'       => 'shop_order',
        'post_status'     => 'publish',
        'suppress_filters' =>  FALSE
    );

    $orders = get_posts( $args );

    if ($orders) :
        foreach ($orders as $order) :
            //echo " $order->ID";
            $this_order = new WC_Order( $order->ID );
            echo '
            <li>
                <span id = "order-$order->ID" class="order-status '.sanitize_title($this_order->status).'">'.ucwords(__($this_order->status, 'woocommerce')).'</span> <a href="'.admin_url('post.php?post='.$order->ID).'&action=edit">' . get_the_time( __( 'l jS \of F Y h:i:s A', 'woocommerce' ), $order->ID ) . '</a><br />
                <small>'.sizeof($this_order->get_items()).' '._n('item', 'items', sizeof($this_order->get_items()), 'woocommerce').' <span class="order-cost">'.__('Total:', 'woocommerce' ) . ' ' . woocommerce_price($this_order->order_total).'</span></small>
            </li>';

            //echo (gettype($time3));
        endforeach;

    endif;
//}
?>

我想要做的是将$ lastid从javascript传递到test.php文件,并像$ lastid一样接收它。

我知道我应该发帖,但我在使用它时遇到了麻烦。任何人都可以引导我采用正确的方法吗?

我的代码现在

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script type="text/javascript" >
window.onload = function(){
    //setInterval(function(){
        //var lastid = '<?php echo $lastid; ?>';
        //alert(lastid);
        var request = $.ajax({
        url: "../wp-content/plugins/woocommerce/admin/test.php",
        type: "POST",      
        dataType: "html",
        data: { lastid : '<?php echo $lastid; ?>'},
        });

        request.done(function(msg) {
            $(".recent-orders").append(msg);
        });

        request.fail(function(jqXHR, textStatus) {
            alert( "Request failed: " + textStatus );
        });
        //addElement();

    //},1000);
setInterval(function(){


},1000);

}

</script>

<?php
function woocommerce_dashboard_recent_orders() {

    $args = array(
        'numberposts'     => 8,
        'orderby'         => 'post_date',
        'order'           => 'ASC',
        'post_type'       => 'shop_order',
        'post_status'     => 'publish'
    );
    $orders = get_posts( $args );
    if ($orders) :
    echo '<ul class="recent-orders">';
        foreach ($orders as $order) :

            $this_order = new WC_Order( $order->ID );

            echo '
            <li>
                <span id = "order-$order->ID" class="order-status '.sanitize_title($this_order->status).'">'.ucwords(__($this_order->status, 'woocommerce')).'</span> <a href="'.admin_url('post.php?post='.$order->ID).'&action=edit">' . get_the_time( __( 'l jS \of F Y h:i:s A', 'woocommerce' ), $order->ID ) . '</a><br />
                <small>'.sizeof($this_order->get_items()).' '._n('item', 'items', sizeof($this_order->get_items()), 'woocommerce').' <span class="order-cost">'.__('Total:', 'woocommerce' ) . ' ' . woocommerce_price($this_order->order_total).'</span></small>
            </li>';

        endforeach;
        $lastid = $order->ID;
        echo '</ul>';
    else:
        echo '<p>' . __( 'There are no product orders yet.', 'woocommerce' ) . '</p>';
    endif;
}
?>

<?php
function filter_where( $where = '' ) {
    $oid = 2110;
    $where = " AND ID > $oid";

    return $where;

}

$lastid = $_GET['lastid'];

add_filter( 'posts_where', 'filter_where' );

    $args = array(
        'numberposts'     => 8,
        'orderby'         => 'post_date',
        'order'           => 'DESC',
        'post_type'       => 'shop_order',
        'post_status'     => 'publish',
        'suppress_filters' =>  FALSE
    );


    $orders = get_posts( $args );
    echo "LAST ID: $lastid";
    if ($orders) :
        foreach ($orders as $order) :
            $this_order = new WC_Order( $order->ID );


            echo '
            <li>
                <span id = "order-$order->ID" class="order-status '.sanitize_title($this_order->status).'">'.ucwords(__($this_order->status, 'woocommerce')).'</span> <a href="'.admin_url('post.php?post='.$order->ID).'&action=edit">' . get_the_time( __( 'l jS \of F Y h:i:s A', 'woocommerce' ), $order->ID ) . '</a><br />
                <small>'.sizeof($this_order->get_items()).' '._n('item', 'items', sizeof($this_order->get_items()), 'woocommerce').' <span class="order-cost">'.__('Total:', 'woocommerce' ) . ' ' . woocommerce_price($this_order->order_total).'</span></small>
            </li>';

        endforeach;

    endif;
    remove_filter( 'posts_where', 'filter_where' );
//}
?>

4 个答案:

答案 0 :(得分:1)

我不确定我是否理解我是否理解了您的问题,但似乎您的第一页已经评估了$ lastId,很可能是来自插入查询...并且您还希望将其设置为javascript变量,同时也使用post方法。假设这就是我对第一页的看法

<script>
var $lastid = <?php echo $lastid ?>;

...

window.onload = function(){

var request = $.ajax({
url: "../wp-content/plugins/woocommerce/admin/test.php",
type: "POST",            
dataType: "html"
data: {"lastid":$lastid},
});

request.done(function(msg) {
    $(".recent-orders").append(msg);
});

request.fail(function(jqXHR, textStatus) {
    alert( "Request failed: " + textStatus );
});

....

</script>

然后在第二页上使用它来访问帖子

<?php
$lastid = $_POST['lastid'];
?>

这就是你在php中发帖的方式,希望这会有所帮助。

答案 1 :(得分:0)

在原始代码

中尝试以下操作
...
url: "../wp-content/plugins/woocommerce/admin/test.php?lastid=2098"
...

然后在test.php中,使用

访问变量
$lastid = $_GET['lastid'];

还有其他几种方法可以做到,这只是一种快速而肮脏的方法。

答案 2 :(得分:0)

1。发送变量:

变化:

//data: {$lastid},

为:

data: { lastid : '<?php echo $lastid; ?>'},

2。 test.php中获取变量

$lastid = $_GET['lastid'];

答案 3 :(得分:0)

window.onload = function(){
var lastId = <?php echo $lastId; ?>;
var request = $.ajax({
url: "../wp-content/plugins/woocommerce/admin/test.php" + "?lastid=" + lastId,
type: "GET",            
dataType: "html"
//data: {$lastid},
});

request.done(function(msg) {
    $(".recent-orders").append(msg);
});

request.fail(function(jqXHR, textStatus) {
    alert( "Request failed: " + textStatus );
});

on test.php添加此行

$lastId = $_GET['lastid'];