Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 21.02.2014, 12:51
Аспирант
Отправить личное сообщение для Lion_astana Посмотреть профиль Найти все сообщения от Lion_astana
 
Регистрация: 19.11.2010
Сообщений: 48

передать параметры в функцию jQuery AJAX
Привет всем. Задумался над таким вопросом:

Имеется скрипт JS (при подключенной jQuery) в котором много раз повторяется функция:

$.ajax({
			type: "POST",
			url: 'my.php',
			cache: false,
			data: {id: $("#optNewsId").val(),it: $("#optNewsIdEdit").val(),title: optNewsEditName},
			dataType: "html",
			beforeSend: showLoad($("#submit")),
			success: function(data){
				hideLoad();
				$(novalidOptList).html(data).show(400);
				if($(novalidOptList).has(".error").length < 1){ // Если в ответе не пришел p  с классом error
					setTimeout(function(){location.reload();},3000);	// Перезагружаем страницу				
				}else{
					clearNovalidList();
				};
			}
		});


Внутри этих функций меняются только:
1) url: 'my.php'
2) data: {id: $("#optNewsId").val(),it: $("#optNewsIdEdit").val(),title: optNewsEditName}
3) beforeSend: showLoad($("#submit"))

Чтоб не повторять это 15 раз на странице, хочу сделать свою пользовательскую функцию, а в ней будет этот $.AJAX. Как предавать в нее(в мою функцию) параметры для 1) и 3) я понимаю, а вот как в функцию передать, а затем поймать и вставить параметр "data", я не знаю.

Тут еще проблема в том, что в примере выше в data передается три параметра, а их может быть 10. Где-то элемент.val(), а где-то уже готовая переменная...

Надеюсь что смог изложить проблему, подскажите если кто знает, буду очень признателен.

Всем заранее спасибо!
Ответить с цитированием
  #2 (permalink)  
Старый 21.02.2014, 13:00
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Очередной пример, когда человек знает "язык программирования jQuery", но не понимает элементарных вещей в JS. Очень печалит конечно.
Ты передаешь аргумент в showLoad, ты передаешь аргументы в $.ajax наконец. И ты при этом утверждаешь что не умеешь передавать аргументы?

К слову твой код избыточен. Во-первых, POST запросы не кэшируются.
Во-вторых, для post-запросов есть алиас: $.post()

Также в beforeSend ты фигню написал. Это должна быть функция. Вместо функции ты тупо сразу же вызываешь свою функцию showLoad, а в beforeSend уходит undefined, который тупо игнорируется.
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #3 (permalink)  
Старый 21.02.2014, 13:43
Аспирант
Отправить личное сообщение для Lion_astana Посмотреть профиль Найти все сообщения от Lion_astana
 
Регистрация: 19.11.2010
Сообщений: 48

Сообщение от danik.js
POST запросы не кэшируются
согласен, натупил.

Сообщение от danik.js
Также в beforeSend ты фигню написал
Т.е. нужно писать:
beforeSend: function(){
showLoad($("#submitOptFormNewsEdit"))
}

?

Я не не знаю как можно передать параметры в data, я спросил как это сделать правильно.
Нужен просто совет знающего, такого как Вы danik.js, уж не раз меня тут выручали :-)

Если я сделаю так:

var dataVar = 'id: $("#optNewsId").val(),it: $("#optNewsIdEdit").val(),title: optNewsEditName';

// .....
 data: {dataVar},
//.....


Так будет правильно?
Ответить с цитированием
  #4 (permalink)  
Старый 21.02.2014, 15:07
Аспирант
Отправить личное сообщение для Lion_astana Посмотреть профиль Найти все сообщения от Lion_astana
 
Регистрация: 19.11.2010
Сообщений: 48

Понял, снова ступил. В data должна передаваться строка/объект. То что я написал - неправильно.
var dataVar = {id: $("#optNewsId").val(),it: $("#optNewsIdEdit").val(),title: optNewsEditName};

// .....
 data: dataVar,
//.....
Ответить с цитированием
  #5 (permalink)  
Старый 21.02.2014, 15:10
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

var data = {id: $('#optNewsId').val(), title: optNewsEditName};
post('my.php', data);


function post(url, data) {
    $.post({
        url: url,
        data: data,
        ...
    });
});
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #6 (permalink)  
Старый 21.02.2014, 16:28
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,589

Сообщение от danik.js Посмотреть сообщение
var data = {id: $('#optNewsId').val(), title: optNewsEditName};
post('my.php', data);


function post(url, data) {
    $.post({
        url: url,
        data: data,
        ...
    });
});
и даже так
post('my.php', {id: $('#optNewsId').val(), title: optNewsEditName});


function post(url, data) {
    $.post({
        url: url,
        data: data,
        ...
    });
});

точно также как в $.ajax() передаётся объект. Объекты ничем не хуже строк.)
__________________
29375, 35
Ответить с цитированием
  #7 (permalink)  
Старый 21.02.2014, 17:24
Аспирант
Отправить личное сообщение для Lion_astana Посмотреть профиль Найти все сообщения от Lion_astana
 
Регистрация: 19.11.2010
Сообщений: 48

danik.js,
Спасибо!
Ответить с цитированием
  #8 (permalink)  
Старый 21.02.2014, 17:25
Аспирант
Отправить личное сообщение для Lion_astana Посмотреть профиль Найти все сообщения от Lion_astana
 
Регистрация: 19.11.2010
Сообщений: 48

Aetae,
Спасибо.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как передать дополнительный параметр через AJAX? allanmiln AJAX и COMET 2 17.11.2013 02:21
Передать данные через ajax в php djonA Общие вопросы Javascript 3 03.04.2013 00:07
Передать параметры через HREF в AJAX izcian Общие вопросы Javascript 5 18.08.2012 20:04
Конфликт AJAX и Jquery Кирюха =) AJAX и COMET 15 08.08.2011 13:36
Как в ajax запросе передать файл методом POST mcpro jQuery 1 16.12.2009 11:41