передать параметры в функцию 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(), а где-то уже готовая переменная... Надеюсь что смог изложить проблему, подскажите если кто знает, буду очень признателен. Всем заранее спасибо! |
Очередной пример, когда человек знает "язык программирования jQuery", но не понимает элементарных вещей в JS. Очень печалит конечно.
Ты передаешь аргумент в showLoad, ты передаешь аргументы в $.ajax наконец. И ты при этом утверждаешь что не умеешь передавать аргументы? :) К слову твой код избыточен. Во-первых, POST запросы не кэшируются. Во-вторых, для post-запросов есть алиас: $.post() Также в beforeSend ты фигню написал. Это должна быть функция. Вместо функции ты тупо сразу же вызываешь свою функцию showLoad, а в beforeSend уходит undefined, который тупо игнорируется. |
Цитата:
Цитата:
beforeSend: function(){ showLoad($("#submitOptFormNewsEdit")) } ? Я не не знаю как можно передать параметры в data, я спросил как это сделать правильно. Нужен просто совет знающего, такого как Вы danik.js, уж не раз меня тут выручали :-) Если я сделаю так: var dataVar = 'id: $("#optNewsId").val(),it: $("#optNewsIdEdit").val(),title: optNewsEditName'; // ..... data: {dataVar}, //..... Так будет правильно? |
Понял, снова ступил. В data должна передаваться строка/объект. То что я написал - неправильно.
var dataVar = {id: $("#optNewsId").val(),it: $("#optNewsIdEdit").val(),title: optNewsEditName}; // ..... data: dataVar, //..... |
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() передаётся объект. Объекты ничем не хуже строк.) |
danik.js,
Спасибо! |
Aetae,
Спасибо. |
Часовой пояс GMT +3, время: 11:55. |