2

按照标题。

我有一块 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

4 回答 4

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>
于 2012-06-26T12:03:43.007 回答
0

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

您的 PHP 变量现在才有效,因为它在您插入 javascript 之前在页面中较早地声明,因此它在页面加载时呈现。

于 2012-06-26T11:46:57.807 回答
0

你可以有一个 PHP 文件,其中包含你的config.php文件

include("config.php");

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

<script>
   // you jquery code with php config variables
</script>
于 2012-06-26T11:47:53.723 回答
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);
?>
于 2012-06-26T12:28:41.750 回答