0

我使用 Zend Framework ..在我的一个 phtml 文件中我有这个代码

<script>
 function foobar(id,type){
   var idarray =  <?php AppNamespace_General::getparentids( ?>id, type<?php ) ?>; // here  the id and type are from js
//the php function returns a json array to the js variable
 ......
  location.href = baseurl +'/somepage/id/'+id;
   }      

如何正确地将 js 元素传递给 php 函数

php 函数(已经考虑过通过 ajax 来实现 .. 它相当复杂)

public static function getparentids($id, $type, $elmarray = '') {

        if (empty($elmarray)) { //avoiding redeclaration of array
            $elmarray = array();
        }
        switch (strtolower($type)) {
            case 'group':
            case 'product':
            case 'specification':

                $gp_handler = new PackAssist_Model_DbTable_Groups();
                $q = "SELECT * FROM t_groups WHERE group_id = $id";
                $sql = $gp_handler->getAdapter()->query($q);

                break;
            case 'part':
                $pt_handler = new PackAssist_Model_DbTable_Parts();
                $q = "SELECT * FROM t_parts WHERE part_id = $id";
                $sql = $pt_handler->getAdapter()->query($q);
                break;
        }
        $result = $sql->fetchAll();
        $i = 0;
        if (count($result) > 0) {
            foreach ($result as $row) {
                if (isset($row['group_parent_id']) && $row['group_parent_id'] != 0) {
                    if (in_array($row['group_id'], $elmarray)) {
                        $e = $row['group_parent_id'];
                    } else if ($row['group_parent_id'] != 0) {
                        $e = $row['group_id'];
                    }
                } else if (isset($row['part_group_id'])) {
                    $e = $row['part_group_id'];
                } else if ($row['group_parent_id'] == 0) {
                    break;
                }
                if (isset($e) && !empty($e)) {
                    array_push($elmarray, $e);
                }
                self::getparentids($e, 'group', $elmarray);
                $i++;
            }
        } else {
            array_push($elmarray, $id);
        }
        array_pop($elmarray); //removing the group of super parent group which we dont need

        if ($i == 0) { // just encode the array only once
            echo json_encode(array_reverse($elmarray));
        }
    }
4

1 回答 1

1

如果您使用 jQuery,您可以执行以下操作来执行 JSON 请求:

$.ajax({
    type: 'GET',
    url: '/path/to/script.php',
    data: '{ id: '+id+', type: '+type+' }',
    contentType: 'application/json',
    dataType: 'json',
    success: function(data) {
         dataObject = JSON.parse(data);
         // process data
    },
        error: function(e) {
            console.log(e.message);
        }
});

您可以在此解决方案中使用现有的 PHP 代码。您指向的 url 只需打印 JSON 结果,就像您当前在getparentids().

于 2012-06-12T04:21:27.720 回答