php
  • javascript
  • jquery
  • 2012-06-26 2 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" 
        ) 
    )); ?>; 
    

    Вы можете включить файл «PHP с питанием JavaScript» в странице PHP с помощью <script src> тега:

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

    Я никогда не нравилась эта идея, но это, конечно, возможно – Alexander

    +1

    я не уверен в этом, но я думаю, что файл .php будет выполняться каждый раз, когда пользователи попадающего в веб-страницы. Я имею в виду .js не будет кэшироваться браузером. Это может замедлить работу сервера. (я могу ошибаться) – lvil

    +1

    Вы _can_ делаете файлы '.php.js' кэшируемыми, устанавливая заголовки expires. Если вы это сделаете или нет, зависит от того, является ли содержимое файла статичным или неустойчивым. –

    Смежные вопросы