我有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.";
}
?>
答案 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>