使用ajax从javascript函数调用php函数

时间:2011-03-07 06:40:27

标签: php javascript ajax

我有一个名为“Example”的类,并有以下方法 printProduct(),printCategory()。 printProduct有一个锚标签,通过onclick调用javascript函数并使用ajax我调用一个php页面,我传递当前产品的值。

private function _printProductLinks ($value_selected) {
        $html = "";
        $html .= "<ul class=\"tabs\">";
        for($i=0; $i<count($this->_productArray); $i++) {
            if($this->_productArray[$i]->_productId == $value_selected) {
                $html .= "<li><a onclick=\"gotoProduct(".$this->_productArray[$i]->_productId.")\" id=\"selected\">" .$this->_productArray[$i]->_productName."</a></li>";

            }else {
                $html .= "<li><a onclick=\"gotoProduct(".$this->_productArray[$i]->_productId.")\">" .$this->_productArray[$i]->_productName."</a></li>";
            }
        }
        $html .= "</ul>";
        return $html;
    }

private function _printCategoryLinks () {
        $html = "";
        $html .= "<ul class=\"tabs\">";
        for($i=0; $i<count($this->_categoryArray); $i++) {
            if($this->_categoryArray[$i]->_categoryId == $this->_currentCategory) {
                $html .= $this->return_nbsp(2)."<li><a onclick=\"gotoCategory(".$this->_currentProduct.",".$this->_categoryArray[$i]->_categoryId.")\" id=\"selected\">" .$this->_categoryArray[$i]->_categoryName."</a></li>";

            }else {
                $html .= $this->return_nbsp(2)."<li><a onclick=\"gotoCategory(".$this->_currentProduct.",".$this->_categoryArray[$i]->_categoryId.")\">" .$this->_categoryArray[$i]->_categoryName."</a></li>";
            }
        }
        $html .= "</ul>";
        $html .= $this->_printSubCategoryLinks();
        return $html;
    }

和javascript gotoProduct()如下

function gotoProduct(product_id){
    try{
        var xmlHttp = createXmlHttpRequestObject();
        var jsonstring = "product=" +encodeURIComponent(product_id);
        xmlHttp.open("POST", "dp_entry.php", true);
        xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
        xmlHttp.setRequestHeader("Content-length", jsonstring.length);
        xmlHttp.setRequestHeader("Connection", "close");
        xmlHttp.onreadystatechange = function(){
            if (xmlHttp.readyState == 4 && xmlHttp.status == 200){
               // var jsondata = xmlHttp.responseText;
            }
        }
        xmlHttp.send(jsonstring);
    } catch (e){
        alert("Can't connect to server:\n" + e.toString());
    }
}

所以,在执行printProductlinks()时会调用javascript函数gotoproduct(product_id),然后必须使用产品下的_printcategories()打印类别

0 个答案:

没有答案