php
  • javascript
  • jquery
  • 2012-06-26 75 views 2 likes 
    2

    按照标题。将PHP变量放在JavaScript文件中

    我有一段的jQuery的,看起来像下面

    $("<div class='creditCardDetails' id='usercurrentccbox'> 
        <div class='creditCard'> 
        <div class='cardChoice'> 
        <span>Choose Card Type</span> 
        <input name='cctype' type='radio' value='V' class='lft-field' id='visa' /> 
        <label for='visa'></label> 
        <input name='cctype' type='radio' value='M' class='lft-field' id='mastercard' /> 
        <label for='mastercard'></label><input name='cctype' type='radio' value='A' class='lft-field' id='amex' /> 
        <label for='amex'></label> 
        </div> 
        <!--cardChoice--> 
        <div class='cardNumber'> 
        <input name='ccn' id='ccn' type='text' class='long-field' value='<?php echo MaskCreditCard($loggedInfo[ccn]);?>' maxlength='19' readonly /> 
        </div> 
        <div class='cardCVV'> 
        <input name='cvv' id='cvv' type='text' maxlength='5' class='small-field' /> 
        </div> 
        <div class='creditCardName'> 
        <input name='ccname' id='ccname' type='text' class='long-field' value='<?php echo $loggedInfo[ccname];?>' readonly/> 
        </div 
        <div class='cardDate'> 
        <input name='exp1' id='exp1' type='text' maxlength='2' class='small-field' value='<?php echo $loggedInfo[ccm];?>' readonly /><input name='exp2' id='exp2' type='text' maxlength='4' class='small-field' value='<?php echo $loggedInfo[ccy];?>' readonly /> 
        </div> 
        </div><!--creditCard-->").insertAfter("#paymentCardChoice"); 
    

    但你会看到它有PHP变量,如果我有这个嵌入我的PHP文件,这工作,但我想保持尽可能短的PHP文件,并将这些代码放入.js文件中,当然,我的变量只显示PHP的文本,而不是变量的自身。

    我试图调用的变量已经在config.php文件中定义。

    我需要使用类似的东西吗?如果是这样,我坚持如何在上面的代码中调用变量。

    $.post('phpfile.php', qString, function (data) { 
    
    }, "json"); 
    

    回答

    0

    。 JS

    var qString = 'selectedID=' +selectedID; 
    $.post('/assets/inc/get-logged-info-card.php', qString, function (results) { 
    $("<div class='creditCardDetails' id='usercurrentccbox'> 
        <div class='creditCard'> 
        <div class='cardChoice'> 
        <span>Choose Card Type</span> 
        <input name='cctype' type='radio' value='V' class='lft-field' id='visa' /> 
        <label for='visa'></label> 
        <input name='cctype' type='radio' value='M' class='lft-field' id='mastercard' /> 
        <label for='mastercard'></label><input name='cctype' type='radio' value='A' class='lft-field' id='amex' /> 
        <label for='amex'></label> 
        </div> 
        <!--cardChoice--> 
        <div class='cardNumber'> 
        <input name='ccn' id='ccn' type='text' class='long-field' value='"+results[0].maskccn+"' maxlength='19' readonly /> 
        </div> 
        <div class='cardCVV'> 
        <input name='cvv' id='cvv' type='text' maxlength='5' class='small-field' /> 
        </div> 
        <div class='creditCardName'> 
        <input name='ccname' id='ccname' type='text' class='long-field' value='"+results[0].ccname+"' readonly/> 
        </div 
        <div class='cardDate'> 
        <input name='exp1' id='exp1' type='text' maxlength='2' class='small-field' value='"+results[0].ccm+"' readonly /><input name='exp2' id='exp2' type='text' maxlength='4' class='small-field' value='"+results[0].ccy+"' readonly /> 
        </div> 
        </div><!--creditCard-->").insertAfter("#paymentCardChoice"); 
    }, "json"); 
    

    .PHP

    <?php 
    $selectedID  = $_POST['selectedID']; 
    
    $q = "SELECT * FROM tbl_user WHERE user_id = '$selectedID'"; 
    $sql = mysql_query($q); 
    
    $results = array(); 
    while($row = mysql_fetch_array($sql)) 
    { 
        $results[] = array(
         'cct'  => $row['user_cct'], 
         'ccn'  => $row['user_ccn'], 
         'maskccn'  => MaskCreditCard($row['user_ccn']), 
         'ccname'  => $row['user_ccname'], 
         'ccm'  => $row['user_date_m'], 
         'ccy'  => $row['user_date_y'] 
        ); 
    } 
    echo json_encode($results); 
    ?> 
    
    0

    如果你把它放在一个单独的文件.js,它不会工作,因为JavaScript是客户端和PHP是服务器端。

    你的PHP变量现在只能工作,因为它是在插入你的javascript之前在页面中被声明的,所以它在页面加载时被渲染。

    0

    你可以有一个PHP文件,其中将包括您config.php文件

    include("config.php"); 
    

    ,然后你可以有脚本标记内jQuery代码

    <script> 
        // you jquery code with php config variables 
    </script> 
    
    3

    PHP代码将无法在.js文件执行。一个非常简单的解决方法是将您的JavaScript + PHP代码放入一个.php文件中;并设置内容类型标题,例如:

    <?php 
        # 
        # script.js.php 
        # 
        header("Content-type: text/javascript"); 
    ?> 
    $("<div><?php echo $foo; ?></div>"); 
    

    你会发现json_encode功能转换几乎任何PHP变量(字符串,数字阵列等)为有效的JavaScript非常方便。此功能负责转义字符,如",\,\n等可能会破坏您的JavaScript代码。下面的例子演示了如何通过任意PHP变量的JavaScript代码:

    <?php 
        # 
        # script.js.php 
        # 
        header("Content-type: text/javascript"); 
    ?> 
    var config = <?php echo json_encode(array(
        "foo" => "foo", 
        "bar" => "bar", 
        "baz" => array(
         "baz1", 
         "baz2" 
        ) 
    )); ?>; 
    

    您可以使用<script src>标签包括在你的PHP页面“PHP驱动的JavaScript”文件:

    <script type="text/javascript" src="script.js.php"></script> 
    
    +0

    我从来不喜欢这个主意,但它肯定是有可能 – Alexander

    +1

    我不知道这件事,但我认为PHP文件将在每次用户进入网页时执行。我的意思是.js不会被浏览器缓存。它会降低服务器的性能。 (我可能是错的) – lvil

    +1

    你可以通过设置expires头文件使'.php.js'文件可缓存。你是否应该这样做取决于文件的内容是静态还是不稳定。 –

    相关问题