簡體   English   中英

將JavaScript變量存儲在PHP變量中,以將其用於源頁面中的動態元描述

[英]Storing the JavaScript variable in a PHP variable to use it for dynamic meta description in source page

我已經在CI中提出了AJAx請求。 該請求正在從數據庫中獲取數據,並將其顯示在同一頁面上。 我需要創建動態元描述。 我需要在元描述中使用數據庫中的一個字段值的地方,因此一旦查看頁面源,它​​就必須出現在視圖頁面源中。

我想將javascript變量存儲在php變量中,因此一旦打開源頁面,就可以輕松地在我的描述中顯示它。 有什么方法可以在視圖頁面源代碼中或使用php使用javascript變量進行元描述。

視圖:

$('#city').on('change',function(){
                 var branchName=  $('#city option:selected').html();
                 $('#branchSel').html('<span><b>Branch Name: </b></span>'+branchName).addClass("appear");
                 var stateName=  $('#state option:selected').html().toLowerCase();
                 var countryName=  $('#country option:selected').html().toLowerCase();
                 countryName = countryName.replace(/\s+/g, '-');
                 stateName = stateName.replace(/\s+/g, '-');
                 branchName = branchName.replace(/\s+/g, '-').toLowerCase();                                       
                    var cityID = $(this).val();
                        if(cityID){
                        window.history.pushState('', '', '<?php echo base_url($bank_rename.'/ifsc-code'); ?>/'+countryName+'/'+stateName+'/'+branchName);
                        $.ajax({
                            type:'POST',
                            url:'<?php echo base_url('bank/getBranchDetail'); ?>',
                            data:'city_id='+cityID,
                             success:function(data){
                                $('#dataDisplay').remove();
                                $('#ifsc').html("").removeClass("appear");
                                $('#micr').html("").removeClass("appear");
                                $('#contact').html("").removeClass("appear");
                                $('#address').html("").removeClass("appear");
                                var dataObj = jQuery.parseJSON(data);
                                    $(dataObj).each(function(){
                                        var ifsc = $('#ifsc').html("<span><b>IFSC Code: </b></span>");
                                        var micr = $('#micr').html("<span><b>MICR Code: </b></span>");
                                        var contact = $('#contact').html("<span><b>Contact No: </b></span>");
                                        var address = $('#address').html("<span><b>Address: </b></span>");
                                        ifsc.append(this.ifsc_code).addClass("appear");
                                        var ab= this.ifsc_code;
                                        micr.append(this.micr_code).addClass("appear");
                                        contact.append(this.contact_no).addClass("appear");
                                        address.append(this.address).addClass("appear");
                                        $('#branch_code').html('<span><b>Branch Code: </b></span>Last six characters of IFSC Code represent Branch code.');

                                    });
                            }
                        }); 
                        }else {
                           window.history.pushState('', '', '<?php echo base_url($bank_rename.'/ifsc-code'); ?>/'+countryName+'/'+stateName);
                           $('#dataDisplay').html('Select State, District, Branch Name to Display Details Here'); 
                           $('#branch_code').html("").removeClass("appear");
                           $('#ifsc').html("").removeClass("appear");
                           $('#micr').html("").removeClass("appear");
                           $('#contact').html("").removeClass("appear");
                           $('#address').html("").removeClass("appear");
                        }
                });
        });

HTML代碼:

<td><p id="ifsc"></p></td>

控制器:

public function getBranchDetail(){
    $branch = array();
    $city_id = $this->input->post('city_id');
    if($city_id){
        $con['conditions'] = array('id'=>$city_id);
        $branchData = $this->Bank_model->getBranchData($con);
    }
    echo json_encode($branchData);
}

模型:

function getBranchData($params = array()){
    $this->db->select('c.micr_code, c.ifsc_code, c.contact_no, c.address');
    $this->db->from($this->branchTbl.' as c');

    //fetch data by conditions
    if(array_key_exists("conditions",$params)){
        foreach ($params['conditions'] as $key => $value) {
            if(strpos($key,'.') !== false){
                $this->db->where($key,$value);
            }else{
                $this->db->where('c.'.$key,$value);
            }
        }
    }

    $query = $this->db->get();
    $result = ($query->num_rows() > 0)?$query->result_array():FALSE;

    //return fetched data
    return $result;
}

如果有人可以告訴我如何僅在視圖頁面中訪問數據庫ifsc_code的單個字段,那么它也可能會有所幫助。 我被困在這里...

如果我正確理解,則在執行上述請求時,您希望動態更新元數據。 您的腳本中有一個ajax調用,該調用僅返回一個對象,您可以按如下所示在請求中發送元數據信息。

在您的控制器文件中

public function getBranchDetail(){
    $branchData = array();
    $branchData['meta_title'] = 'Your meta title here';
    $branchData['meta_description'] = 'Your meta description here';
    $branchData['members'] = array();// good practice to setup default
    $city_id = $this->input->post('city_id');
    if($city_id){
        $con['conditions'] = array('id'=>$city_id);
        $branchData['members'] = $this->Bank_model->getBranchData($con);
    }
    echo json_encode($branchData);
}            

在你的ajax電話中

$.ajax({
    type:'POST',
    url:'<?php echo base_url('bank/getBranchDetail'); ?>',
    data:'city_id='+cityID,
    success:function(data){
        var dataObj = jQuery.parseJSON(data);
        document.title = dataObj.meta_title; // set document title
        $('meta[name=description]').attr('content',dataObj.meta_description;); // set meta description
        $(dataObj.members).each(function(){
        //... your other code
        });
    }
});

我創建了一個關聯數組,在您的ajax調用中分配了值。

編輯:

您的html應該包含這些值

<html>
    <head>
        <title>Your Title</title>
        <meta name="description" content="meta desription">
        .....
    </head>
    <body>
        .....
    </body>
</html>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM