#javascript #jquery
#javascript #jquery
Вопрос:
Я пытаюсь заставить диалоговое окно jQuery всплывать после нажатия ссылки «upvote» здесь: http://www.problemio.com
(Я работал с этим примером, а затем изменил его, поскольку у меня это не сработало: http://blog.nemikor.com/2009/04/08/basic-usage-of-the-jquery-ui-dialog / )
Вот код jQuery, который у меня есть до сих пор, который не работает 🙂
<script type="text/javascript">
$(document).ready(function()
{
var $dialog = $('.dialog')
.dialog({
autoOpen: false,
title: 'Basic Dialog'
});
$('.vote_up').click(function()
{
problem_id = $(this).attr("data-problem_id");
var dataString = 'problem_id=' problem_id 'amp;vote= ';
$.ajax({
type: "POST",
url: "/problems/vote.php",
dataType: "json",
data: dataString,
success: function(data)
{
// ? :)
alert (data);
},
error : function(data)
{
//alert("ajax error, json: " data.responseText);
errorMessage = data.responseText;
if ( errorMessage == "not_logged_in" )
{
alert ("errr");
// Try to create the popup that asks user to log in.
//$(this).dialog();
//$(".dialog").dialog();
$dialog.dialog('open');
// prevent the default action, e.g., following a link
return false;
}
else
{
alert ("not");
}
//alert(JSON.stringify(data));
}
});
//Return false to prevent page navigation
return false;
});
$('.vote_down').click(function()
{
alert("down");
problem_id = $(this).attr("data-problem_id");
var dataString = 'problem_id=' problem_id 'amp;vote=-';
//Return false to prevent page navigation
return false;
});
});
</script>
Над этим кодом у меня есть другая функция jQuery, которая также имеет проверку documentOnready . Будет ли это иметь значение? Должен ли я сделать код диалогового окна глобальным? Если да, то как мне это сделать?
В любом случае, как я могу открыть диалоговое окно для меня с настройкой, которая у меня есть сейчас?
Спасибо!!
Изменил мой импорт jQuery на этот:
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.16/jquery.min.js"></script>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.16/jquery-ui.min.js" />
Комментарии:
1. Ваш код выглядит нормально.
alert("errr");
Отображается ли предупреждение?2. Сначала просто проверьте и убедитесь, что ваше диалоговое окно появляется, выполнив следующие действия сразу после инициализации диалога,
$dialog.dialog('open');
. После этого вы можете продолжить диагностику, если проблема связана с ответом ajax.3. @BNL да, это предупреждение действительно появляется. Ошибка, которую я получаю, касается объекта dialog. И другие люди предложили некоторые импортные файлы, которые я добавил к своему вопросу, которые также выдают ошибки 🙂
4. @Interstellar_Coder нет, этого не произошло, потому что у меня были ошибки в объявлении. Я изменил свой первоначальный вопрос, чтобы показать мой импорт, который выдает ошибки.
Ответ №1:
Вам необходимо включить скрипт пользовательского интерфейса jQuery на свою страницу. Это то, что включает в себя плагин dialog.
В настоящее время вы ссылаетесь только на jQuery 1.6.4 в своем HTML.
Комментарии:
1. @PirateKitten что вы подразумеваете под включением скрипта пользовательского интерфейса jquery? У меня есть этот код в заголовке:
2. Это всего лишь скрипт jQuery. jQueryUI — это дополнительный скрипт, который добавляет функциональность пользовательского интерфейса, и вам также необходимо включить это. Эта страница должна рассказать вам все, что вам нужно знать об этом.
3. @PirateKitten не могли бы вы показать мне фрагмент, который необходимо добавить? Я немного смущен. Я думал, что больше ничего не нужно добавлять, кроме общего импорта jQuery.
4. @PirateKittn Я вижу там под виджетами-> диалог — это то, что мне нужно?
5. Вы читали ту страницу, на которую я только что ссылался? Там даже есть раздел с пометкой «Основной обзор: использование jQuery UI на веб-странице». Вам нужно добавить ссылку на скрипт, одного jQuery недостаточно.
Ответ №2:
Измените это (вверху в вашем $(document).ready()
):
var $dialog = $('.dialog')
.dialog({
autoOpen: false,
title: 'Basic Dialog'
});
Для
var $dialog = $('.dialog');
$dialog.dialog({
autoOpen: false,
title: 'Basic Dialog'
});
И это нормально иметь несколько $(document).ready()
, все они должны запускаться после загрузки dom
Комментарии:
1. только что внес это изменение и все равно получаю ту же ошибку. Какой импорт я должен иметь? В ответе другого человека упоминается некоторый дополнительный импорт библиотеки, который необходимо выполнить.
2. Да, мое предположение было неверным. Он должен работать без исправления, которое я предложил (вот пример — jsfiddle.net/FloydPink/zqStS ). Вы могли бы попробовать добавить это в заголовок страницы, как предложил @PirateKitten —
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.16/jquery-ui.min.js" />
3. он жалуется на эту ссылку: GET ajax.googleapis.com/ajax/libs/jquery/1.8.16/jquery.min.js 404 (Не найден)