Я попытался исследовать это, но я полностью в тупике. Я думаю, что это может иметь какое-то отношение к политике одного и того же происхождения, но я не могу понять, как это относится к моему коду.
У меня есть сайт php с jquery и bootstrap, который отображает динамическую веб-форму в mysite/build.php. Глава, содержащая мои вызовы script, показана ниже:
<head>
<!-- jQuery -->
<script src="https://code.jquery.com/jquery-3.1.0.min.js" integrity="sha256-cCueBR6CsyA4/9szpPfrX3s49M9vUU5BgtiJj06wt/s=" crossorigin="anonymous"></script>
<!-- Bootstrap Latest compiled and minified CSS -->
<link rel="stylesheet" href="#" onclick="location.href='https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css'; return false;" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
<!-- Bootstrap Latest compiled and minified JavaScript -->
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
<!-- app CSS -->
<link href="/css/styles.css" rel="stylesheet"/>
<!-- Are-You-Sure dirty form checker -->
<script src="/js/are-you-sure.js"></script>
<!-- app JavaScript -->
<script src="/js/build-edit-scripts.js"></script>
<!-- obtain sheet data for edit mode -->
<?php if (isset($items)): ?>
<script type="text/javascript">
var items = <?php echo json_encode($items) ?>;
var sheetinfo = <?php echo json_encode($sheetinfo) ?>;
var slug = <?php echo json_encode($slug) ?>;
</script>
<?php endif ?>
<!-- obtain single block and bullet elements for js -->
<script> var blockHTML = <?php echo json_encode($blockhtml) ?>; var bulletHTML = <?php echo json_encode($bullethtml) ?>;</script>
<title><?= (isset($sheetinfo)) ? "Edit: ".htmlspecialchars($sheetinfo['name']) : "Shopping List Generator"; ?></title>
</head>
Затем начало моего пользовательского javascript (build-edit-scripts.js) показано ниже
//execute when DOM fully loaded
$(function() {
// enable areYouSure plugin to detect dirty form changes
$('#myform').areYouSure();
// mark form as dirty any time any text input changes
$(document).on('change', 'input:text', function() {
$('#myform').addClass('dirty');
});
// create empty array for existing slugs
var slugs = [];
// initiate ajax request to get dir listing of existing sheets
$.ajax({
url: "json-io.php",
data: {
purpose: "sheetlist"
},
type: "POST",
dataType : "json"
})
// if successful
.done(function(dirjson) {
slugs = dirjson;
})
// if failure
.fail(function( xhr, status, errorThrown ) {
alert( "Server Error" );
console.log( "Error: " + errorThrown );
console.log( "Status: " + status );
console.dir( xhr );
});
// give focus to title field
$("#title").focus();
Когда я изначально загружаю build.php или жестко обновляю его, у меня нет проблем. Тем не менее, всякий раз, когда я перехожу к внешнему сайту, а затем ударяет по обратной навигации и возвращается к build.php, я получаю следующую консольную ошибку:
Uncaught TypeError: нет доступа (@jquery-3.1.0.min.js: 2)
а затем проблемы, связанные с неправильной загрузкой jquery
Неподготовленная ошибка: Bootstrap JavaScript требует jQuery (@bootstrap.min.js: 6)
Uncaught ReferenceError: jQuery не определен (@are-you-sure.js: 192)
Uncaught ReferenceError: $не определен (@build-edit-scripts.js: 12)
Здесь ни одна из моих JS не работает. Первоначально я думал, что это может быть связано с проблемой моего запроса ajax, но даже когда я полностью удаляю запрос ajax, проблема сохраняется. Любое понимание было бы оценено с большой благодарностью, поскольку я не могу показать, что проблема возникает. Спасибо.