Передача переменной PHP вне класса OOP PHP (из отдельного файла PHP) в значение узла тега HTML <span>в функции JQuery - PullRequest
1 голос
/ 09 июля 2011

В функцию JQuery можно передать ссылку на переменную PHP, которая берется изнутри области экземпляра класса объектов (PHP), для ее рендеринга в число или строку для отображения количества добавленных элементов.?У меня есть код, подобный следующему:

<!--in cart.php-->
$(document).ready(function() {
    $('div#cart').replaceWith('<div id=\'cart2\'><span><?php echo ('.**$itemcount**.'); ?> </span> <a href=\'viewcart.html\' class=\'view-cart\'>View Cart</a><a class=\'checkout\' href=\'checkout.html\'>Checkout</a></div>');
});  

, где $itemcount - это хранимая переменная во внешнем файле PHP с именем store.php

большое спасибо за помощь!

Ответы [ 4 ]

0 голосов
/ 09 июля 2011

store.php

<?PHP
class SomeClass
{
    public $insideMemberNum;

    public function __construct()
    {
        global $outsideNum;
        $insideNum = 2;
        $this->insideMemberNum = 2;

        // 1. $outsideNum = $insideNum; (this will make $outsideNum = 2, even outside this class)
        // 2. $outsideNum = &$insideNum; (this will make $outsideNum = 2, but only wihtin this scope, after it will go back to 1)

        // so youre options are...
        //  1. pass by value
        //  2. create a public variable and store the number in there
        //  3. create a private variable and a public function to return the value of that variable like someone else suggested
    }
}
?>

incart.php

<?PHP


$outsideNum = 1;
echo $outsideNum . "<br />";  // prints out 1

include("store.php"); // include the external file
$obj = new SomeClass(); // instansiate the object


echo $outsideNum . "<br />"; // option 1 prints out 2, option 2 prints out 1
echo $obj->insideMemberNum . "<br />"; // prints out 2

?>
0 голосов
/ 09 июля 2011

store.php

<?php $itemcount = 10; ?>

в cart.php

$(document).ready(function() {
    $('div#cart').replaceWith('<div id=\'cart2\'><span><?php require 'store.php'; echo $itemcount; ?> </span> <a href=\'viewcart.html\' class=\'view-cart\'>View Cart</a><a class=\'checkout\' href=\'checkout.html\'>Checkout</a></div>');
});
0 голосов
/ 09 июля 2011

Здесь есть несколько ответов, которые будут работать со строкой или числом, но если ваши требования станут более сложными, вы столкнетесь с проблемами.

При необходимости вы можете сериализовать объект PHP в JSON, что позволит вам создать объект JavaScript, который может использоваться непосредственно кодом JavaScript / JQuery.

Предполагается, что ваш скрипт cart.php имеет доступ к объекту из store.php, представленного в виде $ phpObject:

, например

...
$(document).ready(function() {
   var jsPhpObject = <?php echo json_encode($phpObject); ?>; // doesn't need to be inside document.ready if required elsewhere
   $('div#cart').replaceWith("<div id='cart2'><span>" + jsPhpObject.property + "</span><a href='viewcart.html' class='view-cart'>View Cart</a><a class='checkout' href='checkout.html'>Checkout</a></div>");
});
...
0 голосов
/ 09 июля 2011

Интересный вопрос, если не сказать больше ...

Допустим, store.php выглядит так:

<?php
class store {
    private $_itemcount = 0;
    public function getItemCount(){

         return $this->_itemcount;

    }
}
?>

Оттуда мы идем так в cart.php:

<?php
    $store = new store();
    $itemcount = $store->getItemCount();

    echo <<<html
    $(document).ready(function() {
        $('div#cart').replaceWith("<div id='cart2'><span>$itemcount</span><a href='viewcart.html' class='view-cart'>View Cart</a><a class='checkout' href='checkout.html'>Checkout</a></div>");
    });
html;
?>

Таким образом, мы можем вернуть значение и использовать его в JavaScript.

...