按照标题。
我有一段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 :(得分: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
文件
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);
?>