0

私はZendFrameworkを使用しています..私のphtmlファイルの1つでこのコードを持っています

<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 は、現在getparentids().

于 2012-06-12T04:21:27.720 に答える