Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 09.05.2020, 00:58
Аспирант
Отправить личное сообщение для Asew Посмотреть профиль Найти все сообщения от Asew
 
Регистрация: 24.08.2018
Сообщений: 30

Выполнить AJAX запрос в ui dialog box
Результат выполнения AJAX запроса - открытие диалогового окна с наполненным содержимым внешней страницы.

На внешней странице по клику на кнопку происходит формирование другого AJAX запроса. Как переписать это нажатие на кнопку, которая определена самим диалоговым окном.

Сам код,
$.ajax({
            url: 'test.php',
            method:"POST",
            data: {
               val_1:val_1

            },
            success: function (data){  
            $('#my_dialog').html(data).dialog('open');
   } 
	});


На странице test.php происходит сохранение по по кнопке:

$(".my_button").click(function () {
 
        $.ajax({
        url: 'save_new_val.php',
        type: 'POST',
        data: {val_2:val_2},
        success: function (data)
        {
         
}
    });
});


Сам диалог "my_dialog":

$("div#my-dialog").dialog({
         	modal: true,
            autoOpen: false,
            height: "auto",
   			width: "auto",
   			position: {
		  		my: "center",
		   		at: "center",
		   		of: window
	   		},
            buttons: [
        	{
	            text: "Сохранить",
	            click: function() {           

		    	}
          	},
        	{
	            text: "Отменить",
	            click: function() {
	            $(this).dialog("close");
	            
            }
        }]
        });


Я хочу чтоб по кнопке "Сохранить" диалогового окна происходило сохранение, а не по кнопке "my_button".

Загуглив нашел, что вроде надо как-то найти кнопку сохранить на внешней странице (в моем случае test.php) и на ней же прописать скрипт

var okBtn = $('#my-dialog.ui-dialog-buttonpane').children("button:contains('Сохранить')");


и дальше прописать сам ajax запрос (точнее фактически переписать). Но это не работает, возможно я делаю что-то не так. Просьба помочь.
Ответить с цитированием
  #2 (permalink)  
Старый 09.05.2020, 17:29
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от Asew
Я хочу чтоб по кнопке "Сохранить" диалогового окна происходило сохранение, а не по кнопке "my_button".
Ну так оно и работает - первый запрос возвращает диалог, которым что-то сохраняется. Как без его получения можно что-то нажать в нем?
Ответить с цитированием
  #3 (permalink)  
Старый 15.05.2020, 21:57
Аспирант
Отправить личное сообщение для Asew Посмотреть профиль Найти все сообщения от Asew
 
Регистрация: 24.08.2018
Сообщений: 30

В том-то и дело, что я хочу задействовать кнопку, которая на стороне самого диалогового окна, а не кнопку, которую я могу сформировать и определить на нее, например, sav-инг параметров на стороне вызываемой ajax страницы. По коду, что я приложил видно, что я показываю ВСЕ что есть на странице в диалоговом окне. А вот как сделать sav-инг через кнопку диалогового окна возникает вопрос?!

p.s. прошу прощения за столь поздний ответ на сообщение, были проблемы со связью
Ответить с цитированием
  #4 (permalink)  
Старый 16.05.2020, 02:40
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Это $('#my_dialog').html(data).dialog('open'); помещает нечто в диалог, где data возвращенное сервером. Даже если исключить этот запрос, поместив в my_dialog сразу все необходимое, то прежде чем щелкнуть на "Сохранить" этот диалог нужно открыть. Фактически то, чего вы просите реализуемо только в случае постоянного открытого диалога. Либо я ничего не понял.
Ответить с цитированием
  #5 (permalink)  
Старый 16.05.2020, 15:18
Аспирант
Отправить личное сообщение для Asew Посмотреть профиль Найти все сообщения от Asew
 
Регистрация: 24.08.2018
Сообщений: 30

Диалог открывается по кнопке, т.е.
$('tr').on('click', 'tr .my_call_dialog', function(event) {
      $.ajax({
            url: 'test.php',
            method:"POST",
            data: {
                 
            },
            success: function (data){  
            $('#my-dialog').html(data).dialog('open'); 
        } 
	});
});


Потом идет приамбула в виде описания диалога:

$("div#my-dialog").dialog({

            modal: true,
            autoOpen: false,
            height: "auto",
            width: "auto",
            position: {
                my: "center",
                at: "center",
                of: window
            },
            buttons: [
            {
                text: "Сохранить",
                click: function() {          
                }
            },
            {
                text: "Отменить",
                click: function() {
                $(this).dialog("close");
            }
        }]
        });


Фактически нажали кнопку>вызвали диалог>в диалог положили ВСЕ, что есть на серверной странице>Хочу сохранить данные через кнопку "Сохранить" диалога самого, а не кнопки (если создать на серверной странице), через которую я могу сохранить данные на стороне серверной страницы. Это возможно сделать ?

Последний раз редактировалось Asew, 16.05.2020 в 15:26.
Ответить с цитированием
  #6 (permalink)  
Старый 16.05.2020, 15:38
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от Asew
Потом идет приамбула в виде описания диалога
Это не преамбула, а параметры диалога, которые определяются плагином. Открыли диалог, в нем кнопка Сохранить, сохраняйте, в чем проблема?

Вы либо не полностью задачу описываете, либо неверно ее описываете, либо просите невозможного. Если выбросить весь этот код и представить все проще, то можно сказать так:

На странице есть форма и она скрыта с кнопкой отправки "Отправить". Чтобы ее заполнить и отправить есть кнопка "Показать". То есть, пока форма скрыта нельзя нажать на кнопку "Отправить". Показали форму кнопкой "Показать" и только затем можно отправить ее кнопкой "Отправить". Тоже самое происходит и у вас в вашем коде.

Конечно можно отправить форму и кнопкой "Показать", программно, но тогда форма теряет смысл ибо ее нельзя будет заполнить.
Ответить с цитированием
  #7 (permalink)  
Старый 16.05.2020, 16:25
Аспирант
Отправить личное сообщение для Asew Посмотреть профиль Найти все сообщения от Asew
 
Регистрация: 24.08.2018
Сообщений: 30

Сам диалог позволяет создавать кнопки ЛЮБЫЕ в пределах своего окна, как раз цель состоит в том, чтобы программно использовать их для сохранения данных на серверной странице избегая собственно любые другие возможности. Если бы сам div был описан не на серверной странице, достаточно все просто - взять значения с любого поля и записать на кнопку "Сохранить" ajax запрос с сохранением в БД всех данных, здесь ситуация сложнее, из-за использования сторонней страницы.
Ответить с цитированием
  #8 (permalink)  
Старый 16.05.2020, 16:31
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от Asew
взять значения с любого поля и записать на кнопку "Сохранить" ajax запрос с сохранением в БД всех данных
Берите, сохраняйте в чем проблема?
Ответить с цитированием
  #9 (permalink)  
Старый 16.05.2020, 16:58
Аспирант
Отправить личное сообщение для Asew Посмотреть профиль Найти все сообщения от Asew
 
Регистрация: 24.08.2018
Сообщений: 30

Проблема достать значение со сторонней страницы,т.е. если написать
$("div#my-dialog").dialog({
            modal: true,
            autoOpen: false,
            height: "auto",
            width: "auto",
            position: {
                my: "center",
                at: "center",
                of: window
            },
            buttons: [
            {
                text: "Сохранить",
                click: function() {         
                var val_2 = $('#get_val').val();
               }
            },
            {
                text: "Отменить",
                click: function() {
                $(this).dialog("close");
            }
        }]
        });

get_val - это id input поля на странице test.php. Так вот , значение не возьмется потому что не видит его диалог. Как к нему обратиться вот в чем проблема......
Ответить с цитированием
  #10 (permalink)  
Старый 16.05.2020, 17:13
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от Asew
get_val - это id input поля на странице test.php
Тогда что такое $('#my-dialog').html(data), если data, это ответ сервера как раз со страницы test.php? Если среди ответа сервера будет и этот ID и помещен в поле get_val, и это поле гарантированно доступно в обработчике события var val_2 = $('#get_val').val();, значит все будет ОК. Правда что может дать обработчик если он кроме как присваивания значения этого поля переменной ничего не делает, а переменная то локальная.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Post запрос Ajax вывод сообщения pro100deadly Элементы интерфейса 2 11.05.2016 22:44
Асинхронный ajax запрос imonzx AJAX и COMET 3 13.06.2015 00:02
Книги по Ajax BaVa Учебные материалы 18 18.08.2013 14:05
Не получается выполнить ajax запрос barfly jQuery 3 08.08.2012 13:52
ajax запрос с подгружемным js HelpeR AJAX и COMET 1 27.10.2008 12:44