将PHP变量传递到外部JavaScript文件

时间:2019-02-13 23:35:25

标签: javascript php variables

我有3个文件; 1.html,2.js,3.php

我正在尝试获取3.php中变量的值以在1.html中的元素中更新

在3.php中,我有一个变量$title

在2.js中,我正在尝试:

var titlePHP = <?php echo json_encode ($title); ?>;
            console.log(titlePHP);
            $('#productTitle').val(titlePHP);

但是得到Uncaught SyntaxError: Unexpected token <

我已经在How to pass variables and data from PHP to JavaScript?中尝试了3种解决方案,但是它们似乎仅在所有代码都在同一页面上时才起作用,但是我的代码必须分开,因为这些文件在做额外的事情。

我可以使用php中的echo更新单个DOM元素,但是我需要传递多个变量,因此回显是不够的。

我的问题是否有更好的解决方案?谢谢

编辑:

2.js:

$(function() {

    //Get the ASIN input
    var form = $('#inputASIN');

    //Get the div to update
    var formReply = $('#formReply'); //status

    //event listener for the contact form.
    $(form).submit(function(e) {
        e.preventDefault();

        //serialise the form data.
        var formData = $(form).serialize();
        //submit the form using AJAX.
        $.ajax({
            type: 'POST',
            url: $(form).attr('action'),
            data: formData
        })
        .done(function(response) {
            $(formReply).toggleClass('card-footer bg-success text-white');
            $(formReply).text(response);

            $('#asinForm').val('');
        })
        .fail(function(data) {
            $(formReply).toggleClass('card-footer bg-danger text-white');

            // Set the message text.
            if (data.responseText !== '') {
                $(formReply).text(data.responseText);
            } else {
                $(formReply).text('Error: could not load data from API.');
            }
        });

    });

});

3.php:

    <?php

      if ($_SERVER["REQUEST_METHOD"] == "POST") {
            include("amazonApiClass.php");
            $obj = new AmazonProductAPI();
            $asin = $_POST["ASIN"];

            if (empty($asin)) {
                  echo "Error: Please enter an ASIN!";
                  exit;
            }

            //fetch product information with the object
            try {
                  $result = $obj->getItemByAsin($asin);
                  echo "Success! Move on to step 2.";
            }
            catch(Exception $e)
            {
                  echo $e->getMessage();
            }



            $title = $result->Items->Item->ItemAttributes->Title;
            $price = $result->Items->Item->OfferSummary->LowestNewPrice->FormattedPrice;    


            echo "Title: $title<br />";
            echo "Price: $price<br />";

      } else {
        echo "Error: could not load data from API.";
    }

?>

1 个答案:

答案 0 :(得分:-1)

您无法将PHP代码添加到外部.js)JavaScript文件中,因为JavaScript本身不了解PHP的工作方式。您也不能使用1.html,因为HTML也不知道PHP的工作方式。

您可能想做的是在3.php(或另一个.php页面)上使用内联 JavaScript:

<?php
  $title = "Title";
?>
<script>
  var titlePHP = <?php echo $title; ?>
<script>

与尝试将PHP直接输出到JavaScript文件不同,此起作用。您的PHP文件将显示<?php,并交换到PHP以在页面加载时注入其变量,然后查看?>并交换回JavaScript:

<script>
  var titlePHP = "Title";
<script>