将PHP变量放在javascript文件中

时间:2012-06-26 11:44:42

标签: php javascript jquery

按照标题。

我有一段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"); 

4 个答案:

答案 0 :(得分:3)

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

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

您会发现json_encode函数非常便于将任何PHP变量(字符串,数字,数组等)转换为有效的JavaScript。此函数负责转义可能会破坏您的JavaScript代码的"\\n等字符。以下示例演示了如何将任意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-powered JavaScript”文件:

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

答案 1 :(得分:0)

如果将它放在单独的.js文件中,它将无效,因为Javascript是客户端而PHP是服务器端。

您的PHP变量现在只能在插入javascript之前在页面的前面声明,因此在页面加载时会呈现它。

答案 2 :(得分:0)

您可以拥有一个包含config.php文件

的PHP文件
include("config.php");

然后您可以在脚本标记中包含您的jquery代码

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

答案 3 :(得分: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);
?>