Этот проект работал и работал отлично, пока тест не начал выдавать ошибки.
Я могу прекрасно открыть страницу с данными, и эта страница может открыть всплывающее окно, показывающее другую страницу с данными совершенно отлично. Когда я пытаюсь открыть другое всплывающее окно (всплывающее окно проверки) из всплывающего окна, возникает ошибка «Диалог не является функцией», и он вообще не открывается?
Просмотр главной страницы:
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>Items</title>
<link href="~/Content/jquery.dataTables.min.css" rel="stylesheet" />
<link href="~/Content/themes/base/jquery-ui.min.css" rel="stylesheet" />
</head>
<body>
<div style="width:90%; margin:0 auto" class="tablecontainer">
<a class="popup btn btn-primary" href="/home/CreateItem/0" style="margin-bottom:20px; margin-top:60px">Add new Item </a>
<table id="CBR-Item">
<thead>
<tr style="color:lightgray">
<th>Serial Number</th>
<th>Safe ID</th>
<th>Date of Entry</th>
<th>Title/Subject</th>
<th>Document type</th>
<th>Sender of Originator</th>
<th>Reference Number</th>
<th>Protective Marking</th>
<th>Number recieved/produced</th>
<th>copy number</th>
<th>Status</th>
<th>Same-Day Loan</th>
<th>Edit</th>
<th>History</th>
</tr>
</thead>
</table>
</div>
<script src="https://code.jquery.com/jquery-3.1.1.min.js"></script>
<script src="~/Scripts/date.format.js"></script>
<script src="~/Scripts/jquery.validate.min.js"></script>
<script src="~/Scripts/jquery.validate.unobtrusive.min.js"></script>
<script src="https://cdn.datatables.net/1.10.13/js/jquery.dataTables.min.js"></script>
<script src="~/Scripts/jquery-ui-1.12.1.min.js"></script>
<script>
var isItCBO;
$(document).ready(function () {
$.ajax({
url: '@Url.RouteUrl(new{ action="CheckCBOStatus", controller="Home"})',
type: 'GET',
dataType: 'json',
success: function (data) {
isItCBO = data.data;
},
error: function (xhr) {
alert("CBO Verification ERROR");
}
})
var oTable = $('#CBR-Item').DataTable({
"ajax": {
"url": '/Home/GetSafeItems',
"type": "get",
"datatype": "json",
},
"columns": [
{ "data": "Serial_Number", "autoWidth": true },
{ "data": "Safe_ID", "autoWidth": true },
{
"data": "Date_of_Entry", "autoWidth": true, "render": function (data) {
var date = new Date(parseInt(data.substr(6)));
var result = date.format("dd/mm/yyyy HH:MM:ss");
return result;
}
},
{ "data": "Title_subject", "autoWidth": true },
{ "data": "Document_Type", "autoWidth": true },
{ "data": "Sender_of_Originator", "autoWidth": true },
{ "data": "Reference_Number", "autoWidth": true },
{ "data": "Protective_Marking", "autoWidth": true },
{ "data": "Number_recieved_produced", "autoWidth": true },
{ "data": "copy_number", "autoWidth": true },
{ "data": "Status", "autoWidth": true },
{ "data": "Same_day_Loan", "autoWidth": true },
{
"data": "Serial_Number", "width": "50px", "render": function (data, type, row) {
if (isItCBO == true) {
return '<a class="popup" href="/home/SaveItem/' + data + '">Edit</a>';
}
else {
return '<a class="errorMe" href="" >Edit</a>';
}
} },
{
"data": "Serial_Number", "width": "50px", "render": function (data, type, row) {
if (isItCBO == true) {
return '<a class="popup" href="/home/EventHistory/' + data + '" itemsel="' + data + '">History</a>';
}
else {
return '<a class="errorMe" href="" >History</a>';
}
// This is the clickable hyperlink that links to the below function. It converts data into a callable attribute "itemsel"
}
}
]
})
$('.tablecontainer').on('click', 'a.errorMe', function (e) {
e.preventDefault();
alert("You do not have permission for this action.");
})
$('.tablecontainer').on('click', 'a.popup', function (e) {
e.preventDefault();
var text = $(this).attr('itemsel');
$.ajax({
url: '@Url.RouteUrl(new{ action="SelectedItem", controller="Home"})',
data: { yeep: text },
type: 'GET',
dataType: 'json',
contentType: "application/json; charset=utf-8",
success: function (data) {
// alert("WIN");
},
error: function (xhr) {
// alert("Form ERROR");
}
});
OpenPopup($(this).attr('href'));
})
function OpenPopup(pageUrl) {
var $pageContent = $('<div/>');
$pageContent.load(pageUrl, function () {
$('#popupForm', $pageContent).removeData('validator');
$('#popupForm', $pageContent).removeData('unobtrusiveValidation');
$.validator.unobtrusive.parse('form');
});
$dialog = $('<div class="popupWindow" style="overflow:auto"></div>')
.html($pageContent)
.dialog({
draggable: false,
autoOpen: false,
resizable: false,
model: true,
title: 'Popup Dialog',
height: 550,
width: 1200,
close: function () {
$dialog.dialog('destroy').remove();
oTable.ajax.reload();
}
})
$('.popupWindow').on('submit', '#popupForm', function (e) {
var url = $('#popupForm')[0].action;
$.ajax({
type: "POST",
url: url,
data: $('#popupForm').serialize(),
success: function (data) {
if (data.status) {
if (status = true) {
alert("Success");
}
else {
alert("Failed");
}
$dialog.dialog('destroy').remove();
oTable.ajax.reload();
}
else {
if (data.Ierror == "SafeF") {
alert("FAILED: Safe ID not found in Database");
}
else if (data.Ierror == "SerF") {
alert("FAILED: Item Serial number already exists");
}
else {
alert("FAILED: Unknown Error");
}
}
}
})
e.preventDefault();
})
$dialog.dialog('open');
}
})
</script>
</body>
</html>
Я не думаю, что содержание всплывающего окна здесь имеет значение, но могу предоставить при необходимости.