По названию.
У меня есть часть 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");
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" ) )); ?>;
Вы можете включить «PHP-powered JavaScript» файл на странице PHP с помощью <script src>
:
<script type="text/javascript" src="script.js.php"></script>
Если вы поместите его в отдельный .js
файл, он не будет работать, поскольку Javascript является клиентской стороной, а PHP – серверной.
Ваша PHP-переменная работает только сейчас, поскольку она была объявлена ранее на странице, прежде чем вставлять свой javascript, поэтому она отображается при загрузке страницы.
вы можете иметь файл PHP, который будет содержать ваш файл config.php
include("config.php");
и тогда вы можете иметь свой код jquery в тегах сценария
<script> // you jquery code with php config variables </script>
.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); ?>